Changeset 28745


Ignore:
Timestamp:
Sep 8, 2007, 10:07:03 AM (12 years ago)
Author:
afb@…
Message:

add --remote-time support to curl fetch

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/base/src/pextlib1.0/curl.c

    r26177 r28745  
    4444#endif
    4545
     46#ifdef HAVE_UTIME_H
     47#include <utime.h>
     48#endif
     49
    4650#include <curl/curl.h>
    4751
     
    125129 * curl fetch subcommand entry point.
    126130 *
    127  * syntax: curl fetch [-v] [--disable-epsv] [--ignore-ssl-cert] [-u userpass] [--effective-url lasturlvar] url filename
     131 * syntax: curl fetch [-v] [--disable-epsv] [--ignore-ssl-cert] [--remote-time] [-u userpass] [--effective-url lasturlvar] url filename
    128132 *
    129133 * @param interp                current interpreter
     
    143147                int useepsv = 1;
    144148                int ignoresslcert = 0;
     149                int remotetime = 0;
    145150                const char* theUserPassString = NULL;
    146151                const char* effectiveURLVarName = NULL;
     
    150155                const char* theURL;
    151156                const char* theFilePath;
     157                long theFileTime = 0;
    152158                CURLcode theCurlCode;
    153159                struct curl_slist *headers = NULL;
     
    168174                        } else if (strcmp(theOption, "--ignore-ssl-cert") == 0) {
    169175                                ignoresslcert = 1;
     176                        } else if (strcmp(theOption, "--remote-time") == 0) {
     177                                remotetime = 1;
    170178                        } else if (strcmp(theOption, "-u") == 0) {
    171179                                /* check we also have the parameter */
     
    297305                }
    298306
     307                /* we want/don't want remote time */
     308                theCurlCode = curl_easy_setopt(theHandle, CURLOPT_FILETIME, remotetime);
     309                if (theCurlCode != CURLE_OK) {
     310                        theResult = SetResultFromCurlErrorCode(interp, theCurlCode);
     311                        break;
     312                }
     313
    299314                /* set the l/p, if any */
    300315                if (theUserPassString) {
     
    324339                (void) fclose( theFile );
    325340                theFile = NULL;
     341               
     342#ifdef HAVE_UTIME_H
     343                if (remotetime) {
     344                        theCurlCode = curl_easy_getinfo(theHandle, CURLINFO_FILETIME, &theFileTime);
     345                        if (theFileTime > 0) {
     346                                struct utimbuf times;
     347                                times.actime = (time_t)theFileTime;
     348                                times.modtime = (time_t)theFileTime;
     349                                utime(theFilePath, &times); /* set the time we got */
     350                        }
     351                }
     352#endif /*HAVE_UTIME_H*/
    326353               
    327354                /* free header memory */
Note: See TracChangeset for help on using the changeset viewer.