Re: 'nother small tweak - cache_dir chdir'ing

From: Kevin Littlejohn <darius@dont-contact.us>
Date: Wed, 31 Jan 2001 10:29:35 +1100

I had char *p = getcwd() near the bottom of the function in that patch, and
gcc complains:

main.c: In function `mainSetCwd':
main.c:434: parse error before `char'
main.c:435: `p' undeclared (first use in this function)
main.c:435: (Each undeclared identifier is reported only once
main.c:435: for each function it appears in.)

Putting it at the top means you've got to remember to free it where-ever you
return (one other place, admittedly), which means I make the best way to have
that function:

static void
mainSetCwd(void)
{
    char *p;
    if (Config.coredump_dir) {
        if (!chdir(Config.coredump_dir)) {
            debug(0, 1) ("Set Current Directory to %s\n", Config.coredump_dir);
            return;
        } else {
            debug(50, 0) ("chdir: %s: %s\n", Config.coredump_dir, xstrerror());
        }
    }
    /* If we don't have coredump_dir or couldn't cd there, report current dir */
    p = getcwd(NULL, 0);
    debug(0, 1) ("Current Directory is %s\n", p);
    xfree(p);
}

(Note, definition and use seperated - my patch didn't do that). I just
checked out the main branch, and your mainSetCwd doesn't have a declaration for
p in it - it just uses, then frees it. Patch would be:

$ diff -u main.c ../../../squid/src/main.c
--- main.c Tue Jan 30 21:09:26 2001
+++ ../../../squid/src/main.c Wed Jan 31 10:20:22 2001
@@ -1,6 +1,6 @@
 
 /*
- * $Id: main.c,v 1.18 2001/01/30 10:09:26 hno Exp $
+ * $Id: main.c,v 1.17 2001/01/12 08:20:33 hno Exp $
  *
  * DEBUG: section 1 Startup and Main Loop
  * AUTHOR: Harvest Derived
@@ -422,6 +422,7 @@
 static void
 mainSetCwd(void)
 {
+ char *p;
     if (Config.coredump_dir) {
        if (!chdir(Config.coredump_dir)) {
            debug(0, 1) ("Set Current Directory to %s\n", Config.coredump_dir);
@@ -430,9 +431,10 @@
            debug(50, 0) ("chdir: %s: %s\n", Config.coredump_dir, xstrerror());
        }
     }
+ /* If we don't have coredump_dir or couldn't cd there, report current dir */
+ p = getcwd(NULL, 0);
     debug(0, 1) ("Current Directory is %s\n", p);
     xfree(p);
- return;
 }
 
 static void

KevinL
(Who solemnly swears to compile before submitting, no matter how trivial)

>>> Henrik Nordstrom wrote
> Kevin Littlejohn wrote:
>
> > Um - I realised afterwards that the "char *p = getcwd(NULL, 0);" line
> > needs splitting into char *p; and p = getcwd...
> >
> > Dunno whether you spotted that or not ;)
>
> Did not spot it, or realize why it should be required..
>
> --
> Henrik Nordstrom
> Squid hacker
>
Received on Tue Jan 30 2001 - 16:29:44 MST

This archive was generated by hypermail pre-2.1.9 : Tue Dec 09 2003 - 16:13:26 MST