Commit e4952bf5 authored by Jelmer Vernooij's avatar Jelmer Vernooij Committed by Gerald (Jerry) Carter
Browse files

r947: Patch from Fabian Franz <FabianFranz@gmx.de> that allows you

to specify a port in the device URL.
(This used to be commit e6dcda2b10c4871ca8488bf04b22c2c11673621d)
parent e0034075
Loading
Loading
Loading
Loading
+16 −4
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ extern BOOL in_client; /* Boolean for client library */
 */

static void		list_devices(void);
static struct cli_state	*smb_connect(const char *, const char *, const char *, const char *, const char *);
static struct cli_state	*smb_connect(const char *, const char *, int, const char *, const char *, const char *);
static int		smb_print(struct cli_state *, char *, FILE *);


@@ -50,6 +50,7 @@ static int smb_print(struct cli_state *, char *, FILE *);
{
  int		i;		/* Looping var */
  int		copies;		/* Number of copies */
  int 		port;		/* Port number */
  char		uri[1024],	/* URI */
		*sep,		/* Pointer to separator */
		*password;	/* Password */
@@ -87,7 +88,7 @@ static int smb_print(struct cli_state *, char *, FILE *);
    fputs("       The DEVICE_URI environment variable can also contain the\n", stderr);
    fputs("       destination printer:\n", stderr);
    fputs("\n", stderr);
    fputs("           smb://[username:password@][workgroup/]server/printer\n", stderr);
    fputs("           smb://[username:password@][workgroup/]server[:port]/printer\n", stderr);
    return (1);
  }

@@ -180,6 +181,16 @@ static int smb_print(struct cli_state *, char *, FILE *);
  else
    workgroup = NULL;
  
  if ((sep = strrchr_m(server, ':')) != NULL)
  {
    *sep++ = '\0';

    port=atoi(sep);
  }
  else
  	port=0;
	
 
 /*
  * Setup the SAMBA server state...
  */
@@ -201,7 +212,7 @@ static int smb_print(struct cli_state *, char *, FILE *);

  do
  {
    if ((cli = smb_connect(workgroup, server, printer, username, password)) == NULL)
    if ((cli = smb_connect(workgroup, server, port, printer, username, password)) == NULL)
    {
      if (getenv("CLASS") == NULL)
      {
@@ -267,6 +278,7 @@ list_devices(void)
static struct cli_state *		/* O - SMB connection */
smb_connect(const char *workgroup,		/* I - Workgroup */
            const char *server,		/* I - Server */
            const int port,		/* I - Port */
            const char *share,		/* I - Printer */
            const char *username,		/* I - Username */
            const char *password)		/* I - Password */
@@ -281,7 +293,7 @@ smb_connect(const char *workgroup, /* I - Workgroup */

  get_myname(myname);  
  	
  nt_status = cli_full_connection(&c, myname, server, NULL, 0, share, "?????", 
  nt_status = cli_full_connection(&c, myname, server, NULL, port, share, "?????", 
				  username, workgroup, password, 0, Undefined, NULL);
  
  if (!NT_STATUS_IS_OK(nt_status)) {