git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [patch] fixup GECOS handling

From
MSMartin Schlemmer <azarah@nosferatu.za.org>
Date
Apr 22, 2005, 19:06 UTC
Message-ID
<1114196803.29271.52.camel@nosferatu.lan>
In-Reply-To
<1114192702.31076.428.camel@axer.marchex.com>
On Fri, 2005-04-22 at 10:58 -0700, Kyle Hayes wrote:
Show 13 quoted lines
> On Fri, 2005-04-22 at 19:18 +0200, Petr Baudis wrote:
> > Dear diary, on Fri, Apr 22, 2005 at 06:58:25PM CEST, I got a letter
> > where Martin Schlemmer <azarah@nosferatu.za.org> told me that...
> > > Meaning, if they use a ',' in one of the fields (and it is a linux
> > > system with the chfn most probably from the shadow package), then they
> > > are looking for trouble.  The only reason I added the ';' was because
> > > somebody said whatever OS used it instead of a ','.
> > 
> > What about just swapping the two tests so that ; is cut off and , only
> > when no ; is around?
> 
> Even nicer.  I like it.  Very clean!
> 

Right, but ';' is not cutoff on linux for one, and from what you said freebsd as well. How about this rather (note that I assumed that the use of ';' as delimiter will be in the minority, but we can switch things around if it turns out the other way):

---- (not signed off, etc, as just for comments)

Index: commit-tree.c
===================================================================
--- 5f61aecb06c2f2579bbb5951b1b53e0dedc434eb/commit-tree.c  (mode:100644 sha1:c0b07f89286c3f6cceae8122b4c3142c8efaf8e1)
+++ uncommitted/commit-tree.c  (mode:100644)
@@ -96,21 +96,6 @@
                if (!c)
                        break;
        }
-
-       /*
-        * Go back, and remove crud from the end: some people
-        * have commas etc in their gecos field
-        */
-       dst--;
-       while (--dst >= p) {
-               unsigned char c = *dst;
-               switch (c) {
-               case ',': case ';': case '.':
-                       *dst = 0;
-                       continue;
-               }
-               break;
-       }
 }

 static const char *month_names[] = {
@@ -311,6 +296,17 @@
        if (!pw)
                die("You don't exist. Go away!");
        realgecos = pw->pw_gecos;
+       /*
+        * The GECOS fields are seperated via ',' on Linux, FreeBSD, etc,
+        * and ';' on AIX.
+        */
+#if defined(__aix__)
+       if (strchr(realgecos, ';'))
+               *strchr(realgecos, ';') = 0;
+#else
+       if (strchr(realgecos, ','))
+               *strchr(realgecos, ',') = 0;
+#endif
        len = strlen(pw->pw_name);
        memcpy(realemail, pw->pw_name, len);
        realemail[len] = '@';
-- 
Martin Schlemmer
Previous: Kyle HayesNext: Kyle Hayes
Message 10 of 16 in “fixup GECOS handling”
  1. fixup GECOS handlingMartin Schlemmer, Apr 18, 2005
  2. David WoodhouseApr 18, 2005
  3. Martin SchlemmerApr 18, 2005
  4. fixup GECOS handlingMartin Schlemmer, Apr 22, 2005
  5. Kyle HayesApr 22, 2005
  6. Martin SchlemmerApr 22, 2005
  7. Petr BaudisApr 22, 2005
  8. Martin SchlemmerApr 22, 2005
  9. Kyle HayesApr 22, 2005
  10. Martin SchlemmerApr 22, 2005
  11. Kyle HayesApr 22, 2005
  12. Petr BaudisApr 23, 2005
  13. Martin SchlemmerApr 23, 2005
  14. Kyle HayesApr 22, 2005
  15. Andy IsaacsonApr 22, 2005
  16. Kyle HayesApr 25, 2005

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.