URI: 
       tcache answer - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 70723aae3c508956008f10d0e98a5bb0604c4975
   DIR parent a1d42887d63ed853e07242d76b38614ad4eb2c76
  HTML Author: rsc <devnull@localhost>
       Date:   Tue,  4 Jan 2005 22:19:25 +0000
       
       cache answer
       
       Diffstat:
         M src/lib9/sysname.c                  |      31 +++++++++++++++++++------------
       
       1 file changed, 19 insertions(+), 12 deletions(-)
       ---
   DIR diff --git a/src/lib9/sysname.c b/src/lib9/sysname.c
       t@@ -4,20 +4,27 @@
        char*
        sysname(void)
        {
       -        char buf[300], *p, *q;
       +        static char buf[512];
       +        char *p, *q;
        
       -        if((q = getenv("sysname")) == nil){
       -                if(gethostname(buf, sizeof buf) < 0)
       -                        goto err;
       +        if(buf[0])
       +                return buf;
       +
       +        if((q = getenv("sysname")) != nil && q[0] != 0){
       +                utfecpy(buf, buf+sizeof buf, q);
       +                free(q);
       +                return buf;
       +        }
       +        if(q)
       +                free(q);
       +
       +        if(gethostname(buf, sizeof buf) >= 0){
                        buf[sizeof buf-1] = 0;
       -                q = strdup(buf);
       -                if(q == nil)
       -                        goto err;
       +                if((p = strchr(buf, '.')) != nil)
       +                        *p = 0;
       +                return buf;
                }
       -        if((p = strchr(q, '.')) != nil)
       -                *p = 0;
       -        return q;
        
       -err:
       -        return "gnot";
       +        strcpy(buf, "gnot");
       +        return buf;
        }