]> granicus.if.org Git - curl/commitdiff
document time fixes
authorDaniel Stenberg <daniel@haxx.se>
Wed, 22 Nov 2000 13:50:17 +0000 (13:50 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Wed, 22 Nov 2000 13:50:17 +0000 (13:50 +0000)
lib/ftp.c
lib/getinfo.c
lib/highlevel.c
lib/url.c

index eb3f58453dd8cdd65e8c47a65e7edec4902ec59a..88601f2eacb3fcc8ef1eedec78eece0595dd47b5 100644 (file)
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -659,9 +659,9 @@ CURLcode _ftp(struct connectdata *conn)
     }
   }
 
-  if(data->bits.get_filetime) {
+  if(data->bits.get_filetime && ftp->file) {
     /* we have requested to get the modified-time of the file, this is yet
-       again a grey area the MDTM is not kosher RFC959 */
+       again a grey area as the MDTM is not kosher RFC959 */
     ftpsendf(data->firstsocket, conn, "MDTM %s", ftp->file);
 
     nread = GetLastResponse(data->firstsocket, buf, conn, &ftpcode);
@@ -725,10 +725,29 @@ CURLcode _ftp(struct connectdata *conn)
     /* get the size from the ascii string: */
     filesize = atoi(buf+4);
 
-    sprintf(buf, "Content-Length: %d\n", filesize);
+    sprintf(buf, "Content-Length: %d\r\n", filesize);
     result = client_write(data, CLIENTWRITE_BOTH, buf, 0);
     if(result)
       return result;
+
+#ifdef HAVE_STRFTIME
+    if(data->bits.get_filetime && data->progress.filetime) {
+      struct tm *tm;
+#ifdef HAVE_LOCALTIME_R
+      struct tm buffer;
+      tm = (struct tm *)localtime_r(&data->progress.filetime, &buffer);
+#else
+      tm = localtime(&data->progress.filetime);
+#endif
+      /* format: "Tue, 15 Nov 1994 12:45:26 GMT" */
+      strftime(buf, BUFSIZE-1, "Last-Modified: %a, %d %b %Y %H:%M:%S %Z\r\n",
+               tm);
+      result = client_write(data, CLIENTWRITE_BOTH, buf, 0);
+      if(result)
+        return result;
+    }
+#endif
+
     return CURLE_OK;
   }
 
index 786692c89c5893359fe1444256eb9b0d9ae52828..1b3e597674eae789bad9d22529c9f6984f1956ef 100644 (file)
@@ -84,6 +84,9 @@ CURLcode curl_getinfo(CURL *curl, CURLINFO info, ...)
   case CURLINFO_HTTP_CODE:
     *param_longp = data->progress.httpcode;
     break;
+  case CURLINFO_FILETIME:
+    *param_longp = data->progress.filetime;
+    break;
   case CURLINFO_HEADER_SIZE:
     *param_longp = data->header_size;
     break;
index e77c7eba4edb4439b64a86bb78a1dbbd503e1368..dc7acc1304005666f6363bc67c8403b613fdd9f0 100644 (file)
@@ -395,7 +395,7 @@ _Transfer(struct connectdata *c_conn)
               }
               else if(strnequal("Last-Modified:", p,
                                 strlen("Last-Modified:")) &&
-                      data->timecondition) {
+                      (data->timecondition || data->bits.get_filetime) ) {
                 time_t secs=time(NULL);
                 timeofdoc = curl_getdate(p+strlen("Last-Modified:"), &secs);
                 if(data->bits.get_filetime)
index 878aee1f6435e607f96eb61d616a0da2523ba762..9522034f0f389e683e503737bcfb64553d6e4391 100644 (file)
--- a/lib/url.c
+++ b/lib/url.c
@@ -365,6 +365,9 @@ CURLcode curl_setopt(CURL *curl, CURLoption option, ...)
   case CURLOPT_POST:
     data->bits.http_post = va_arg(param, long)?TRUE:FALSE;
     break;
+  case CURLOPT_FILETIME:
+    data->bits.get_filetime = va_arg(param, long)?TRUE:FALSE;
+    break;
   case CURLOPT_FTPLISTONLY:
     data->bits.ftp_list_only = va_arg(param, long)?TRUE:FALSE;
     break;