httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From thom...@apache.org
Subject cvs commit: httpd-2.0/support htpasswd.c
Date Sat, 13 Mar 2004 22:18:19 GMT
thommay     2004/03/13 14:18:19

  Modified:    .        CHANGES
               support  htpasswd.c
  Log:
  htpasswd.c: various cleanups and move to using apr_temp_dir_get()
  
  Submitted by: Guenter Knauf
  Reviewed by: Thom May
  
  Revision  Changes    Path
  1.1423    +3 -0      httpd-2.0/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/CHANGES,v
  retrieving revision 1.1422
  retrieving revision 1.1423
  diff -u -r1.1422 -r1.1423
  --- CHANGES	11 Mar 2004 17:21:47 -0000	1.1422
  +++ CHANGES	13 Mar 2004 22:18:18 -0000	1.1423
  @@ -2,6 +2,9 @@
   
     [Remove entries to the current 2.0 section below, when backported]
   
  +  *) htpasswd: use apr_temp_dir_get() and general cleanup
  +     [Guenter Knauf <eflash gmx.net>, Thom May]
  +
     *) mod_proxy: Fix handling of non-200 success status codes when
        "ProxyErrorOverride On" is configured.  PR 20183.
        [Marcus Janson <marcus.janson tre.se>, Joe Orton]
  
  
  
  1.75      +17 -24    httpd-2.0/support/htpasswd.c
  
  Index: htpasswd.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/support/htpasswd.c,v
  retrieving revision 1.74
  retrieving revision 1.75
  diff -u -r1.74 -r1.75
  --- htpasswd.c	9 Feb 2004 20:40:52 -0000	1.74
  +++ htpasswd.c	13 Mar 2004 22:18:19 -0000	1.75
  @@ -261,12 +261,13 @@
       return ((check || sbuf.filetype != APR_REG) ? 0 : 1);
   }
   
  -#ifdef NETWARE
  -void nwTerminate()
  +static void terminate(void)
   {
  +    apr_terminate();
  +#ifdef NETWARE
       pressanykey();
  -}
   #endif
  +}
   
   static void check_args(apr_pool_t *pool, int argc, const char *const argv[], 
                          int *alg, int *mask, char **user, char **pwfilename, 
  @@ -379,18 +380,6 @@
       }
   }
   
  -static char *get_tempname(apr_pool_t *p)
  -{
  -    char tn[] = "htpasswd.tmp.XXXXXX";
  -    char *dirname;
  -
  -    if (!(dirname = getenv("TEMP")) && !(dirname = getenv("TMPDIR"))) {
  -            dirname = P_tmpdir;
  -    }
  -    dirname = apr_psprintf(p, "%s/%s", dirname, tn);
  -    return dirname;
  -}
  -
   /*
    * Let's do it.  We end up doing a lot of file opening and closing,
    * but what do we care?  This application isn't run constantly.
  @@ -403,7 +392,8 @@
       char *password = NULL;
       char *pwfilename = NULL;
       char *user = NULL;
  -    char *tn;
  +    char tn[] = "htpasswd.tmp.XXXXXX";
  +    char *dirname;
       char scratch[MAX_STRING_LEN];
       int found = 0;
       int i;
  @@ -417,10 +407,7 @@
   #endif
   
       apr_app_initialize(&argc, &argv, NULL);
  -    atexit(apr_terminate);
  -#ifdef NETWARE
  -    atexit(nwTerminate);
  -#endif
  +    atexit(terminate);
       apr_pool_create(&pool, NULL);
       apr_file_open_stderr(&errfile, pool);
   
  @@ -519,10 +506,16 @@
        * We can access the files the right way, and we have a record
        * to add or update.  Let's do it..
        */
  -    tn = get_tempname(pool);
  -    if (apr_file_mktemp(&ftemp, tn, 0, pool) != APR_SUCCESS) {
  +    if (apr_temp_dir_get((const char**)&dirname, pool) != APR_SUCCESS) {
  +        apr_file_printf(errfile, "%s: could not determine temp dir\n",
  +                        argv[0]);
  +        exit(ERR_FILEPERM);
  +    }
  +    dirname = apr_psprintf(pool, "%s/%s", dirname, tn);
  +
  +    if (apr_file_mktemp(&ftemp, dirname, 0, pool) != APR_SUCCESS) {
           apr_file_printf(errfile, "%s: unable to create temporary file %s\n", 
  -                        argv[0], tn);
  +                        argv[0], dirname);
           exit(ERR_FILEPERM);
       }
   
  @@ -600,7 +593,7 @@
   
       /* The temporary file has all the data, just copy it to the new location.
        */
  -    if (apr_file_copy(tn, pwfilename, APR_FILE_SOURCE_PERMS, pool) !=
  +    if (apr_file_copy(dirname, pwfilename, APR_FILE_SOURCE_PERMS, pool) !=
           APR_SUCCESS) {
           apr_file_printf(errfile, "%s: unable to update file %s\n", 
                           argv[0], pwfilename);
  
  
  

Mime
View raw message