Ignore:
Timestamp:
Mar 27, 2006, 9:27:02 PM (15 years ago)
Author:
jberry
Message:

Add new option to curl fetch command, "--effective-url", which enables
it to return the actual effective url used during a fetch.

The effectiveURL will differ from the requested url in the effect of redirects.

File:
1 edited

Legend:

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

    r15739 r17196  
    11/*
    22 * curl.c
    3  * $Id: curl.c,v 1.9 2006/01/08 07:05:28 jkh Exp $
     3 * $Id: curl.c,v 1.10 2006/03/27 21:27:02 jberry Exp $
    44 *
    55 * Copyright (c) 2005 Paul Guyot, Darwinports Team.
     
    125125 * curl fetch subcommand entry point.
    126126 *
     127 * syntax: curl fetch [-v] [--disable-epsv] [-u userpass] [--effective-url lasturlvar] url filename
     128 *
    127129 * @param interp                current interpreter
    128130 * @param objc                  number of parameters
     
    141143                int useepsv = 1;
    142144                const char* theUserPassString = NULL;
     145                const char* effectiveURLVarName = NULL;
     146                char* effectiveURL = NULL;
    143147                int optioncrsr;
    144148                int lastoption;
     
    172176                                        break;                                 
    173177                                }
     178                        } else if (strcmp(theOption, "--effective-url") == 0) {
     179                                /* check we also have the parameter */
     180                                if (optioncrsr < lastoption) {
     181                                        optioncrsr++;
     182                                        effectiveURLVarName = Tcl_GetString(objv[optioncrsr]);
     183                                } else {
     184                                        Tcl_SetResult(interp,
     185                                                "curl fetch: --effective-url option requires a parameter",
     186                                                TCL_STATIC);
     187                                        theResult = TCL_ERROR;
     188                                        break;                                 
     189                                }
    174190                        } else {
    175191                                char theErrorString[512];
     
    275291                (void) fclose( theFile );
    276292                theFile = NULL;
     293               
     294                /* If --effective-url option was given, set given variable name to last effective url used by curl */
     295                if (effectiveURLVarName != NULL) {
     296                        theCurlCode = curl_easy_getinfo(theHandle, CURLINFO_EFFECTIVE_URL, &effectiveURL);
     297                        Tcl_SetVar(interp, effectiveURLVarName,
     298                                (effectiveURL == NULL || theCurlCode != CURLE_OK) ? "" : effectiveURL,
     299                                0);
     300                }
    277301               
    278302                /* check everything went fine */
Note: See TracChangeset for help on using the changeset viewer.