home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.ncftp.com
/
ftp.ncftp.com.zip
/
ftp.ncftp.com
/
ncftp
/
older_versions
/
ncftp-3.2.2-src.tar.bz2
/
ncftp-3.2.2-src.tar
/
ncftp-3.2.2
/
libncftp
/
c_modtime.c
< prev
next >
Wrap
C/C++ Source or Header
|
2005-01-01
|
2KB
|
67 lines
/* c_modtime.c
*
* Copyright (c) 1996-2005 Mike Gleason, NcFTP Software.
* All rights reserved.
*
*/
#include "syshdrs.h"
#ifdef PRAGMA_HDRSTOP
# pragma hdrstop
#endif
int
FTPFileModificationTime(const FTPCIPtr cip, const char *const file, time_t *const mdtm)
{
int result;
ResponsePtr rp;
if (cip == NULL)
return (kErrBadParameter);
if (strcmp(cip->magic, kLibraryMagic))
return (kErrBadMagic);
if ((mdtm == NULL) || (file == NULL))
return (kErrBadParameter);
*mdtm = kModTimeUnknown;
if (cip->hasMDTM == kCommandNotAvailable) {
cip->errNo = kErrMDTMNotAvailable;
result = kErrMDTMNotAvailable;
} else {
rp = InitResponse();
if (rp == NULL) {
result = kErrMallocFailed;
cip->errNo = kErrMallocFailed;
FTPLogError(cip, kDontPerror, "Malloc failed.\n");
} else {
result = RCmd(cip, rp, "MDTM %s", file);
if (result < 0) {
DoneWithResponse(cip, rp);
return (result);
}
if (result == 2) {
if (strncmp(rp->msg.first->line, "1910", 4) == 0) {
/* Year was printed as "19100" rather than
* "2000" ...
*/
FTPLogError(cip, kDontPerror, "Warning: Server has Y2K Bug in \"MDTM\" command.\n");
}
*mdtm = UnMDTMDate(rp->msg.first->line);
cip->hasMDTM = kCommandAvailable;
result = kNoErr;
} else if (FTP_UNIMPLEMENTED_CMD(rp->code)) {
cip->hasMDTM = kCommandNotAvailable;
cip->hasMDTM_set = kCommandNotAvailable;
cip->errNo = kErrMDTMNotAvailable;
result = kErrMDTMNotAvailable;
} else {
cip->errNo = kErrMDTMFailed;
result = kErrMDTMFailed;
}
DoneWithResponse(cip, rp);
}
}
return (result);
} /* FTPFileModificationTime */