*** /w/pub/ftp/kermit/f/ckcftp.c Sat Nov 2 19:13:15 2002 --- ./ckcftp.c Sun Nov 17 15:59:13 2002 *************** *** 1,6 **** /* C K C F T P -- FTP Client for C-Kermit */ ! char *ckftpv = "FTP Client, 8.0.197, 24 Oct 2002"; /* Authors: --- 1,6 ---- /* C K C F T P -- FTP Client for C-Kermit */ ! char *ckftpv = "FTP Client, 8.0.200, 24 Oct 2002"; /* Authors: *************** *** 1260,1265 **** --- 1260,1266 ---- { "filenames", FTS_CNV, 0 }, { "get-filetype-switching", FTS_GFT, 0 }, { "passive-mode", FTS_PSV, 0 }, + { "pasv", FTS_PSV, CM_INV }, { "permissions", FTS_PRM, 0 }, { "progress-messages", FTS_TST, 0 }, { "send-port-commands", FTS_SPC, 0 }, *************** *** 6965,6971 **** --- 6966,6987 ---- !strncmp(src,s,usrpath)) { s2 = s + usrpath; /* Local name skips past remote path */ } + #ifdef COMMENT + /* This doesn't work if the path prefix contains wildcards! */ haspath = (srvpath > usrpath); + #else + { /* Count path segments instead */ + int x1 = 0, x2 = 0; + char *p; + for (p = s; *p; p++) + if (ispathsep(*p)) x1++; + for (p = src; *p; p++) + if (ispathsep(*p)) x2++; + haspath = x1 > x2; + debug(F111,"ftp get server path segments",s,x1); + debug(F111,"ftp get user path segments",src,x2); + } + #endif /* COMMENT */ debug(F111,"ftp get haspath",s+usrpath,haspath); if (haspath) { /* Server file has path segments? */ *************** *** 7028,7033 **** --- 7044,7053 ---- ckstrncpy(filnam,s,CKMAXPATH); /* For \v(filename) */ if (!*s2) /* Local name */ s2 = asnambuf; /* As-name */ + + if (!*s2) /* Sat Nov 16 19:19:39 2002 */ + s2 = nam; + debug(F110,"ftp get filnam ",s,0); debug(F110,"ftp get asnam A",s2,0); *************** *** 14745,14757 **** /* Get temp file */ ! if ((tmpfilnam[mlsdepth] = (char *)malloc(16))) { ! ckmakmsg((char *)tmpfilnam[mlsdepth],16,p,"ckXXXXXX",NULL,NULL); } else { printf("?Malloc failure: remote_files()\n"); return(NULL); } #ifdef MKTEMP #ifdef MKSTEMP x = mkstemp((char *)tmpfilnam[mlsdepth]); --- 14765,14785 ---- /* Get temp file */ ! if ((tmpfilnam[mlsdepth] = (char *)malloc(CKMAXPATH+1))) { ! ckmakmsg((char *)tmpfilnam[mlsdepth], ! CKMAXPATH+1,p,"ckXXXXXX",NULL,NULL); } else { printf("?Malloc failure: remote_files()\n"); return(NULL); } + #ifdef NT + { + char * tmpfil = mktemp((char *)tmpfilnam[mlsdepth]); + if ( tmpfil ) + ckstrncpy(tmpfilnam[mlsdepth],tmpfil,CKMAXPATH+1); + } + #else /* NT */ #ifdef MKTEMP #ifdef MKSTEMP x = mkstemp((char *)tmpfilnam[mlsdepth]); *************** *** 14761,14766 **** --- 14789,14795 ---- #endif /* MKSTEMP */ /* if no mktmpnam() the name will just be "ckXXXXXX"... */ #endif /* MKTEMP */ + #endif /* NT */ debug(F111,"ftp remote_files tmpfilnam[mlsdepth]", tmpfilnam[mlsdepth],mlsdepth);