]> git.sesse.net Git - vlc/blobdiff - modules/access/smb.c
dtv: More detailed DiSEqC error messages.
[vlc] / modules / access / smb.c
index abe67a7b237aa501c3a87bc0b4dea12ecf139863..670457455204e743bcbabdbeb4e2fb0a5a470abe 100644 (file)
@@ -1,24 +1,24 @@
 /*****************************************************************************
  * smb.c: SMB input module
  *****************************************************************************
- * Copyright (C) 2001-2009 the VideoLAN team
+ * Copyright (C) 2001-2009 VLC authors and VideoLAN
  * $Id$
  *
  * Authors: Gildas Bazin <gbazin@videolan.org>
  *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
  * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
  *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
 /*****************************************************************************
 # include "config.h"
 #endif
 
-#include <vlc_common.h>
-#include <vlc_fs.h>
-#include <vlc_plugin.h>
-#include <vlc_access.h>
-
+#include <errno.h>
 #ifdef WIN32
-#   ifdef HAVE_FCNTL_H
-#       include <fcntl.h>
-#   endif
-#   ifdef HAVE_SYS_STAT_H
-#       include <sys/stat.h>
-#   endif
+#   include <fcntl.h>
+#   include <sys/stat.h>
 #   include <io.h>
 #   define smbc_open(a,b,c) vlc_open(a,b,c)
 #   define smbc_fstat(a,b) _fstati64(a,b)
 #   include <libsmbclient.h>
 #endif
 
-#include <errno.h>
+#include <vlc_common.h>
+#include <vlc_fs.h>
+#include <vlc_plugin.h>
+#include <vlc_access.h>
 
 /*****************************************************************************
  * Module descriptor
 static int  Open ( vlc_object_t * );
 static void Close( vlc_object_t * );
 
-#define CACHING_TEXT N_("Caching value in ms")
-#define CACHING_LONGTEXT N_( \
-    "Caching value for SMB streams. This " \
-    "value should be set in milliseconds." )
 #define USER_TEXT N_("SMB user name")
 #define USER_LONGTEXT N_("User name that will " \
     "be used for the connection.")
@@ -80,14 +71,11 @@ vlc_module_begin ()
     set_capability( "access", 0 )
     set_category( CAT_INPUT )
     set_subcategory( SUBCAT_INPUT_ACCESS )
-    add_integer( "smb-caching", 2 * DEFAULT_PTS_DELAY / 1000, NULL,
-                 CACHING_TEXT, CACHING_LONGTEXT, true )
-        change_safe()
-    add_string( "smb-user", NULL, NULL, USER_TEXT, USER_LONGTEXT,
+    add_string( "smb-user", NULL, USER_TEXT, USER_LONGTEXT,
                 false )
-    add_password( "smb-pwd", NULL, NULL, PASS_TEXT,
+    add_password( "smb-pwd", NULL, PASS_TEXT,
                   PASS_LONGTEXT, false )
-    add_string( "smb-domain", NULL, NULL, DOMAIN_TEXT,
+    add_string( "smb-domain", NULL, DOMAIN_TEXT,
                 DOMAIN_LONGTEXT, false )
     add_shortcut( "smb" )
     set_callbacks( Open, Close )
@@ -184,11 +172,11 @@ static int Open( vlc_object_t *p_this )
     /* Build an SMB URI
      * smb://[[[domain;]user[:password@]]server[/share[/path[/file]]]] */
 
-    if( !psz_user ) psz_user = var_CreateGetString( p_access, "smb-user" );
+    if( !psz_user ) psz_user = var_InheritString( p_access, "smb-user" );
     if( psz_user && !*psz_user ) { free( psz_user ); psz_user = NULL; }
-    if( !psz_pwd ) psz_pwd = var_CreateGetString( p_access, "smb-pwd" );
+    if( !psz_pwd ) psz_pwd = var_InheritString( p_access, "smb-pwd" );
     if( psz_pwd && !*psz_pwd ) { free( psz_pwd ); psz_pwd = NULL; }
-    if( !psz_domain ) psz_domain = var_CreateGetString( p_access, "smb-domain" );
+    if( !psz_domain ) psz_domain = var_InheritString( p_access, "smb-domain" );
     if( psz_domain && !*psz_domain ) { free( psz_domain ); psz_domain = NULL; }
 
 #ifdef WIN32
@@ -252,9 +240,6 @@ static int Open( vlc_object_t *p_this )
 
     p_sys->i_smb = i_smb;
 
-    /* Update default_pts to a suitable value for smb access */
-    var_Create( p_access, "smb-caching", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
-
     return VLC_SUCCESS;
 }
 
@@ -334,8 +319,8 @@ static int Control( access_t *p_access, int i_query, va_list args )
         break;
 
     case ACCESS_GET_PTS_DELAY:
-        *va_arg( args, int64_t * )
-                  = var_GetInteger( p_access, "smb-caching" ) * 1000;
+        *va_arg( args, int64_t * ) = INT64_C(1000)
+            * var_InheritInteger( p_access, "network-caching" );
         break;
 
     case ACCESS_SET_PAUSE_STATE:
@@ -363,28 +348,12 @@ static void Win32AddConnection( access_t *p_access, char *psz_path,
                                 char *psz_user, char *psz_pwd,
                                 char *psz_domain )
 {
-    DWORD (*OurWNetAddConnection2)( LPNETRESOURCE, LPCTSTR, LPCTSTR, DWORD );
     char psz_remote[MAX_PATH], psz_server[MAX_PATH], psz_share[MAX_PATH];
     NETRESOURCE net_resource;
     DWORD i_result;
     char *psz_parser;
     VLC_UNUSED( psz_domain );
 
-    HINSTANCE hdll = LoadLibrary(_T("MPR.DLL"));
-    if( !hdll )
-    {
-        msg_Warn( p_access, "couldn't load mpr.dll" );
-        return;
-    }
-
-    OurWNetAddConnection2 =
-      (void *)GetProcAddress( hdll, _T("WNetAddConnection2A") );
-    if( !OurWNetAddConnection2 )
-    {
-        msg_Warn( p_access, "couldn't find WNetAddConnection2 in mpr.dll" );
-        return;
-    }
-
     memset( &net_resource, 0, sizeof(net_resource) );
     net_resource.dwType = RESOURCETYPE_DISK;
 
@@ -402,7 +371,7 @@ static void Win32AddConnection( access_t *p_access, char *psz_path,
     snprintf( psz_remote, sizeof( psz_remote ), "\\\\%s\\%s", psz_server, psz_share );
     net_resource.lpRemoteName = psz_remote;
 
-    i_result = OurWNetAddConnection2( &net_resource, psz_pwd, psz_user, 0 );
+    i_result = WNetAddConnection2( &net_resource, psz_pwd, psz_user, 0 );
 
     if( i_result != NO_ERROR )
     {
@@ -417,7 +386,5 @@ static void Win32AddConnection( access_t *p_access, char *psz_path,
     {
         msg_Dbg( p_access, "failed to connect to %s", psz_remote );
     }
-
-    FreeLibrary( hdll );
 }
 #endif // WIN32