URI:
       tunsharp.c - 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
       ---
       tunsharp.c (926B)
       ---
            1 #include <u.h>
            2 #include <libc.h>
            3 
            4 /*
            5  * I don't want too many of these,
            6  * but the ones we have are just too useful.
            7  */
            8 static struct {
            9         char *old;
           10         char *new;
           11 } replace[] = {
           12         "#9", nil,        /* must be first */
           13         "#d", "/dev/fd",
           14 };
           15 
           16 char*
           17 unsharp(char *old)
           18 {
           19         char *new;
           20         int i, olen, nlen, len;
           21 
           22         if(replace[0].new == nil)
           23                 replace[0].new = get9root();
           24 
           25         for(i=0; i<nelem(replace); i++){
           26                 if(!replace[i].new)
           27                         continue;
           28                 olen = strlen(replace[i].old);
           29                 if(strncmp(old, replace[i].old, olen) != 0
           30                 || (old[olen] != '\0' && old[olen] != '/'))
           31                         continue;
           32                 nlen = strlen(replace[i].new);
           33                 len = strlen(old)+nlen-olen;
           34                 new = malloc(len+1);
           35                 if(new == nil)
           36                         /* Most callers won't check the return value... */
           37                         sysfatal("out of memory translating %s to %s%s", old, replace[i].new, old+olen);
           38                 strcpy(new, replace[i].new);
           39                 strcpy(new+nlen, old+olen);
           40                 assert(strlen(new) == len);
           41                 return new;
           42         }
           43         return old;
           44 }