malloc.c
char *dupstr(const char *s) {
    char *r = smalloc(1+strlen(s));
    strcpy(r,s);
    return r;
}
/*
 * dupstr is like strdup, but with the never-return-NULL property
 * of smalloc (and also reliably defined in all environments :-)
 */
dupstr is like strdup, but with the never-return-NULL property
of smalloc (and also reliably defined in all environments :-)
dupstr is like strdup but with the never - return - NULL property of smalloc ( and also reliably defined in all environments : - )
char *dupstr(const char *s) {
    char *r = smalloc(1+strlen(s));
    strcpy(r,s);
    return r;
}
char * dupstr ( const char * s ) { char * r = smalloc ( 1 + strlen ( s ) ) ; strcpy ( r , s ) ; return r ; }
dupstr is like strdup, but with the never-return-NULL property
 of smalloc (and also reliably defined in all environments :-)
dupstr is like strdup but with the never - return - NULL property of smalloc ( and also reliably defined in all environments : - )