From 8afebcdd7e055cd6c6f9eb69f9ba652b4e1ab591 Mon Sep 17 00:00:00 2001 From: Richard Sharpe Date: Sun, 21 Jun 1998 12:44:34 +0000 Subject: Remove the copyright to Canon Information Systems Australia, as we don't want them to have the copyright. Added a new DOSERR response code that Win95 returns, unimp, unimplemented. Added code to ignore errors on setting remote time, as Win 95 does not like the time being changed on a directory. Win NT and Samba are OK at this. This is the next to last clean-ups here. Next is to properly handle restore times on directories (except for Win95--see above). Now have Jay's changes in and have fixed a bug reported by Tim Lee. (This used to be commit dc9436bae4493b71ba92970d6cc49dbb33cd55cd) --- source3/client/clitar.c | 25 ++++++++++++++++++------- source3/include/smb.h | 1 + source3/libsmb/smberr.c | 1 + 3 files changed, 20 insertions(+), 7 deletions(-) (limited to 'source3') diff --git a/source3/client/clitar.c b/source3/client/clitar.c index b06b5b2d37..d7d47fc903 100644 --- a/source3/client/clitar.c +++ b/source3/client/clitar.c @@ -102,6 +102,7 @@ BOOL tar_system=True; BOOL tar_hidden=True; /* Be noisy - make a catalogue */ BOOL tar_noisy=True; +BOOL tar_real_noisy=True; char tar_type='\0'; static char **cliplist=NULL; @@ -568,7 +569,7 @@ static int strslashcmp(char *s1, char *s2) do_setrtime, set time on a file or dir ... **********************************************************************/ -static int do_setrtime(char *fname, int mtime) +static int do_setrtime(char *fname, int mtime, BOOL err_silent) { char *inbuf, *outbuf, *p; char *name; @@ -583,9 +584,15 @@ static int do_setrtime(char *fname, int mtime) } - safe_strcpy(name, "\\", strlen(fname) + 1); + if (*fname != '\\') + safe_strcpy(name, "\\", strlen(fname) + 1); + else + safe_strcpy(name, "", strlen(fname) + 1); safe_strcat(name, fname, strlen(fname) + 1); + if (fname[strlen(name) - 1] == '\\') + name[strlen(name) - 1] = '\0'; + inbuf = (char *)malloc(BUFFER_SIZE + SAFETY_MARGIN); outbuf = (char *)malloc(BUFFER_SIZE + SAFETY_MARGIN); @@ -619,8 +626,10 @@ static int do_setrtime(char *fname, int mtime) if (CVAL(inbuf,smb_rcls) != 0) { - DEBUG(0,("%s setting attributes on file %s\n", - smb_errstr(inbuf), fname)); + if (!err_silent) { + DEBUG(0,("%s setting attributes on file %s\n", + smb_errstr(inbuf), fname)); + } free(name);free(inbuf);free(outbuf); return(False); } @@ -1954,10 +1963,12 @@ static void do_tarput() DEBUG(5, ("Updating creation date on %s\n", finfo.name)); - if (!do_setrtime(finfo.name, finfo.mtime)) { + if (!do_setrtime(finfo.name, finfo.mtime, True)) { - DEBUG(0, ("Could not set time on file: %s\n", finfo.name)); - return; + if (tar_real_noisy) { + DEBUG(0, ("Could not set time on file: %s\n", finfo.name)); + } + /*return; /* Win 95 does not like setting time on dirs */ } diff --git a/source3/include/smb.h b/source3/include/smb.h index a5571d3645..821bf12d94 100644 --- a/source3/include/smb.h +++ b/source3/include/smb.h @@ -164,6 +164,7 @@ implemented */ #define ERRnofiles 18 /* no more files found in file search */ #define ERRbadshare 32 /* Share mode on file conflict with open mode */ #define ERRlock 33 /* Lock request conflicts with existing lock */ +#define ERRunsup 50 /* Request unsupported, returned by Win 95, RJS 20Jun98 */ #define ERRfilexists 80 /* File in operation already exists */ #define ERRcannotopen 110 /* Cannot open the file specified */ #define ERRunknownlevel 124 diff --git a/source3/libsmb/smberr.c b/source3/libsmb/smberr.c index c284d18ba6..ee751c0f80 100644 --- a/source3/libsmb/smberr.c +++ b/source3/libsmb/smberr.c @@ -58,6 +58,7 @@ err_code_struct dos_msgs[] = { {"ERRnofiles",18,"A File Search command can find no more files matching the specified criteria."}, {"ERRbadshare",32,"The sharing mode specified for an Open conflicts with existing FIDs on the file."}, {"ERRlock",33,"A Lock request conflicted with an existing lock or specified an invalid mode, or an Unlock requested attempted to remove a lock held by another process."}, + {"ERRunsup", 50, "The operation is unsupported"}, {"ERRnosuchshare", 67, "You specified an invalid share name"}, {"ERRfilexists",80,"The file named in a Create Directory, Make New File or Link request already exists."}, {"ERRbadpipe",230,"Pipe invalid."}, -- cgit