Ignore:
Timestamp:
Apr 10, 2007, 5:27:38 AM (14 years ago)
Author:
Paul Smedley
Message:

Updated source to 3.0.25rc1

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/samba/source/client/client.c

    r22 r26  
    38483848        int rc = 0;
    38493849        fstring new_workgroup;
     3850        BOOL tar_opt = False;
     3851        BOOL service_opt = False;
    38503852        struct poptOption long_options[] = {
    38513853                POPT_AUTOHELP
     
    38943896        }
    38953897
    3896         pc = poptGetContext("smbclient", argc, (const char **) argv, long_options,
    3897                                 POPT_CONTEXT_KEEP_FIRST);
     3898        /* skip argv(0) */
     3899        pc = poptGetContext("smbclient", argc, (const char **) argv, long_options, 0);
    38983900        poptSetOtherOptionHelp(pc, "service <password>");
    38993901
     
    39013903
    39023904        while ((opt = poptGetNextOpt(pc)) != -1) {
     3905
     3906                /* if the tar option has been called previouslt, now we need to eat out the leftovers */
     3907                /* I see no other way to keep things sane --SSS */
     3908                if (tar_opt == True) {
     3909                        while (poptPeekArg(pc)) {
     3910                                poptGetArg(pc);
     3911                        }
     3912                        tar_opt = False;
     3913                }
     3914
     3915                /* if the service has not yet been specified lets see if it is available in the popt stack */
     3916                if (!service_opt && poptPeekArg(pc)) {
     3917                        pstrcpy(service, poptGetArg(pc));
     3918                        /* Convert any '/' characters in the service name to '\' characters */
     3919                        string_replace(service, '/','\\');
     3920
     3921                        if (count_chars(service,'\\') < 3) {
     3922                                d_printf("\n%s: Not enough '\\' characters in service\n",service);
     3923                                poptPrintUsage(pc, stderr, 0);
     3924                                exit(1);
     3925                        }
     3926                        service_opt = True;
     3927                }
     3928
     3929                /* if the service has already been retrieved then check if we have also a password */
     3930                if (service_opt && (!cmdline_auth_info.got_pass) && poptPeekArg(pc)) {
     3931                        pstrcpy(cmdline_auth_info.password, poptGetArg(pc));
     3932                        cmdline_auth_info.got_pass = True;
     3933                }
     3934       
    39033935                switch (opt) {
    39043936                case 'M':
     
    39553987                                        exit(1);
    39563988                                }
    3957                                 /* Now we must eat (optnum - i) options - they have
    3958                                  * been processed by tar_parseargs().
    3959                                  */
    3960                                 optnum -= i;
    3961                                 for (i = 0; i < optnum; i++)
    3962                                         poptGetOptArg(pc);
    39633989                        }
     3990                        /* this must be the last option, mark we have parsed it so that we know we have */
     3991                        tar_opt = True;
    39643992                        break;
    39653993                case 'D':
     
    39724000        }
    39734001
    3974         poptGetArg(pc);
    3975 
     4002        /* We may still have some leftovers after the last popt option has been called */
     4003        if (tar_opt == True) {
     4004                while (poptPeekArg(pc)) {
     4005                        poptGetArg(pc);
     4006                }
     4007                tar_opt = False;
     4008        }
     4009
     4010        /* if the service has not yet been specified lets see if it is available in the popt stack */
     4011        if (!service_opt && poptPeekArg(pc)) {
     4012                pstrcpy(service, poptGetArg(pc));
     4013                /* Convert any '/' characters in the service name to '\' characters */
     4014                string_replace(service, '/','\\');
     4015
     4016                if (count_chars(service,'\\') < 3) {
     4017                        d_printf("\n%s: Not enough '\\' characters in service\n",service);
     4018                        poptPrintUsage(pc, stderr, 0);
     4019                        exit(1);
     4020                }
     4021                service_opt = True;
     4022        }
     4023
     4024        /* if the service has already been retrieved then check if we have also a password */
     4025        if (service_opt && (!cmdline_auth_info.got_pass) && poptPeekArg(pc)) {
     4026                pstrcpy(cmdline_auth_info.password, poptGetArg(pc));
     4027                cmdline_auth_info.got_pass = True;
     4028        }
     4029       
    39764030        /* check for the -P option */
    39774031
     
    40124066                pstrcpy( calling_name, global_myname() );
    40134067
    4014         if(poptPeekArg(pc)) {
    4015                 pstrcpy(service,poptGetArg(pc)); 
    4016                 /* Convert any '/' characters in the service name to '\' characters */
    4017                 string_replace(service, '/','\\');
    4018 
    4019                 if (count_chars(service,'\\') < 3) {
    4020                         d_printf("\n%s: Not enough '\\' characters in service\n",service);
    4021                         poptPrintUsage(pc, stderr, 0);
    4022                         exit(1);
    4023                 }
    4024         }
    4025 
    4026         if (poptPeekArg(pc) && !cmdline_auth_info.got_pass) {
    4027                 cmdline_auth_info.got_pass = True;
    4028                 pstrcpy(cmdline_auth_info.password,poptGetArg(pc)); 
    4029         }
    4030 
    40314068        init_names();
    40324069
Note: See TracChangeset for help on using the changeset viewer.