diff options
Diffstat (limited to 'source3/client/client.c')
-rw-r--r-- | source3/client/client.c | 155 |
1 files changed, 29 insertions, 126 deletions
diff --git a/source3/client/client.c b/source3/client/client.c index eb6b572760..a421f36d80 100644 --- a/source3/client/client.c +++ b/source3/client/client.c @@ -2,7 +2,7 @@ Unix SMB/CIFS implementation. SMB client Copyright (C) Andrew Tridgell 1994-1998 - Copyright (C) Simo Sorce 2001-2002 + Copyright (C) Simo Sorce 2001 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 @@ -307,7 +307,7 @@ static BOOL do_this_one(file_info *finfo) if (*fileselection && !mask_match(finfo->name,fileselection,False)) { - DEBUG(3,("mask_match %s failed\n", finfo->name)); + DEBUG(3,("match_match %s failed\n", finfo->name)); return False; } @@ -649,16 +649,15 @@ static int cmd_du(void) /**************************************************************************** get a file from rname to lname ****************************************************************************/ -static int do_get(char *rname, char *lname, BOOL reget) +static int do_get(char *rname,char *lname) { - int handle = 0, fnum; + int handle=0,fnum; BOOL newhandle = False; char *data; struct timeval tp_start; int read_size = io_bufsize; uint16 attr; size_t size; - off_t start = 0; off_t nread = 0; int rc = 0; @@ -678,18 +677,7 @@ static int do_get(char *rname, char *lname, BOOL reget) if(!strcmp(lname,"-")) { handle = fileno(stdout); } else { - if (reget) { - handle = sys_open(lname, O_WRONLY|O_CREAT, 0644); - if (handle >= 0) { - start = sys_lseek(handle, 0, SEEK_END); - if (start == -1) { - d_printf("Error seeking local file\n"); - return 1; - } - } - } else { - handle = sys_open(lname, O_WRONLY|O_CREAT|O_TRUNC, 0644); - } + handle = sys_open(lname,O_WRONLY|O_CREAT|O_TRUNC,0644); newhandle = True; } if (handle < 0) { @@ -707,7 +695,7 @@ static int do_get(char *rname, char *lname, BOOL reget) } DEBUG(2,("getting file %s of size %.0f as %s ", - rname, (double)size, lname)); + lname, (double)size, lname)); if(!(data = (char *)malloc(read_size))) { d_printf("malloc fail for size %d\n", read_size); @@ -716,7 +704,7 @@ static int do_get(char *rname, char *lname, BOOL reget) } while (1) { - int n = cli_read(cli, fnum, data, nread + start, read_size); + int n = cli_read(cli, fnum, data, nread, read_size); if (n <= 0) break; @@ -729,7 +717,7 @@ static int do_get(char *rname, char *lname, BOOL reget) nread += n; } - if (nread + start < size) { + if (nread < size) { DEBUG (0, ("Short read when getting file %s. Only got %ld bytes.\n", rname, (long)nread)); @@ -794,7 +782,7 @@ static int cmd_get(void) next_token_nr(NULL,lname,NULL,sizeof(lname)); - return do_get(rname, lname, False); + return do_get(rname, lname); } @@ -828,7 +816,7 @@ static void do_mget(file_info *finfo) if (!(finfo->mode & aDIR)) { pstrcpy(rname,cur_dir); pstrcat(rname,finfo->name); - do_get(rname, finfo->name, False); + do_get(rname,finfo->name); return; } @@ -892,7 +880,7 @@ static int cmd_more(void) } dos_clean_name(rname); - rc = do_get(rname, lname, False); + rc = do_get(rname,lname); pager=getenv("PAGER"); @@ -1058,31 +1046,19 @@ static int cmd_altname(void) /**************************************************************************** put a single file ****************************************************************************/ -static int do_put(char *rname, char *lname, BOOL reput) +static int do_put(char *rname,char *lname) { int fnum; XFILE *f; - int start = 0; - int nread = 0; - char *buf = NULL; - int maxwrite = io_bufsize; + int nread=0; + char *buf=NULL; + int maxwrite=io_bufsize; int rc = 0; struct timeval tp_start; GetTimeOfDay(&tp_start); - if (reput) { - fnum = cli_open(cli, rname, O_RDWR|O_CREAT, DENY_NONE); - if (fnum >= 0) { - if (!cli_qfileinfo(cli, fnum, NULL, &start, NULL, NULL, NULL, NULL, NULL) && - !cli_getattrE(cli, fnum, NULL, &start, NULL, NULL, NULL)) { - d_printf("getattrib: %s\n",cli_errstr(cli)); - return 1; - } - } - } else { - fnum = cli_open(cli, rname, O_RDWR|O_CREAT|O_TRUNC, DENY_NONE); - } + fnum = cli_open(cli, rname, O_RDWR|O_CREAT|O_TRUNC, DENY_NONE); if (fnum == -1) { d_printf("%s opening remote file %s\n",cli_errstr(cli),rname); @@ -1099,12 +1075,6 @@ static int do_put(char *rname, char *lname, BOOL reput) /* size of file is not known */ } else { f = x_fopen(lname,O_RDONLY, 0); - if (f && reput) { - if (x_tseek(f, start, SEEK_SET) == -1) { - d_printf("Error seeking local file\n"); - return 1; - } - } } if (!f) { @@ -1134,7 +1104,7 @@ static int do_put(char *rname, char *lname, BOOL reput) break; } - ret = cli_write(cli, fnum, 0, buf, nread + start, n); + ret = cli_write(cli, fnum, 0, buf, nread, n); if (n != ret) { d_printf("Error writing file: %s\n", cli_errstr(cli)); @@ -1222,7 +1192,7 @@ static int cmd_put(void) } } - return do_put(rname, lname, False); + return do_put(rname,lname); } /************************************* @@ -1414,7 +1384,7 @@ static int cmd_mput(void) dos_format(rname); - do_put(rname, lname, False); + do_put(rname, lname); } free_file_list(file_list); SAFE_FREE(quest); @@ -1486,7 +1456,7 @@ static int cmd_print(void) slprintf(rname, sizeof(rname)-1, "stdin-%d", (int)sys_getpid()); } - return do_put(rname, lname, False); + return do_put(rname, lname); } @@ -1896,8 +1866,8 @@ static int cmd_printmode(void) } /**************************************************************************** - do the lcd command - ****************************************************************************/ +do the lcd command +****************************************************************************/ static int cmd_lcd(void) { fstring buf; @@ -1911,70 +1881,8 @@ static int cmd_lcd(void) } /**************************************************************************** - get a file restarting at end of local file - ****************************************************************************/ -static int cmd_reget(void) -{ - pstring local_name; - pstring remote_name; - char *p; - - pstrcpy(remote_name, cur_dir); - pstrcat(remote_name, "\\"); - - p = remote_name + strlen(remote_name); - - if (!next_token_nr(NULL, p, NULL, sizeof(remote_name) - strlen(remote_name))) { - d_printf("reget <filename>\n"); - return 1; - } - pstrcpy(local_name, p); - dos_clean_name(remote_name); - - next_token_nr(NULL, local_name, NULL, sizeof(local_name)); - - return do_get(remote_name, local_name, True); -} - -/**************************************************************************** - put a file restarting at end of local file - ****************************************************************************/ -static int cmd_reput(void) -{ - pstring local_name; - pstring remote_name; - fstring buf; - char *p = buf; - SMB_STRUCT_STAT st; - - pstrcpy(remote_name, cur_dir); - pstrcat(remote_name, "\\"); - - if (!next_token_nr(NULL, p, NULL, sizeof(buf))) { - d_printf("reput <filename>\n"); - return 1; - } - pstrcpy(local_name, p); - - if (!file_exist(local_name, &st)) { - d_printf("%s does not exist\n", local_name); - return 1; - } - - if (next_token_nr(NULL, p, NULL, sizeof(buf))) - pstrcat(remote_name, p); - else - pstrcat(remote_name, local_name); - - dos_clean_name(remote_name); - - return do_put(remote_name, local_name, True); -} - - -/**************************************************************************** - list a share name - ****************************************************************************/ +list a share name +****************************************************************************/ static void browse_fn(const char *name, uint32 m, const char *comment, void *state) { @@ -2101,9 +2009,7 @@ static struct {"quit",cmd_quit,"logoff the server",{COMPL_NONE,COMPL_NONE}}, {"rd",cmd_rmdir,"<directory> remove a directory",{COMPL_NONE,COMPL_NONE}}, {"recurse",cmd_recurse,"toggle directory recursion for mget and mput",{COMPL_NONE,COMPL_NONE}}, - {"reget",cmd_reget,"<remote name> [local name] get a file restarting at end of local file",{COMPL_REMOTE,COMPL_LOCAL}}, {"rename",cmd_rename,"<src> <dest> rename some files",{COMPL_REMOTE,COMPL_REMOTE}}, - {"reput",cmd_reput,"<local name> [remote name] put a file restarting at end of remote file",{COMPL_LOCAL,COMPL_REMOTE}}, {"rm",cmd_del,"<mask> delete all matching files",{COMPL_REMOTE,COMPL_NONE}}, {"rmdir",cmd_rmdir,"<directory> remove a directory",{COMPL_NONE,COMPL_NONE}}, {"setmode",cmd_setmode,"filename <setmode string> change modes of file",{COMPL_REMOTE,COMPL_NONE}}, @@ -2618,21 +2524,16 @@ static int do_message_op(void) { struct in_addr ip; struct nmb_name called, calling; - fstring server_name; - char name_type_hex[10]; + + zero_ip(&ip); make_nmb_name(&calling, global_myname, 0x0); make_nmb_name(&called , desthost, name_type); - safe_strcpy(server_name, desthost, sizeof(server_name)); - snprintf(name_type_hex, sizeof(name_type_hex), "#%X", name_type); - safe_strcat(server_name, name_type_hex, sizeof(server_name)); - zero_ip(&ip); if (have_ip) ip = dest_ip; - if (!(cli=cli_initialise(NULL)) || (cli_set_port(cli, port) != port) || - !cli_connect(cli, server_name, &ip)) { + if (!(cli=cli_initialise(NULL)) || (cli_set_port(cli, port) != port) || !cli_connect(cli, desthost, &ip)) { d_printf("Connection to %s failed\n", desthost); return 1; } @@ -2758,6 +2659,7 @@ static void remember_query_host(const char *arg, got_pass = True; memset(strchr_m(getenv("USER"),'%')+1,'X',strlen(password)); } + strupper(username); } /* modification to support PASSWD environmental var @@ -2774,6 +2676,7 @@ static void remember_query_host(const char *arg, if (*username == 0 && getenv("LOGNAME")) { pstrcpy(username,getenv("LOGNAME")); + strupper(username); } if (*username == 0) { |