|
Lines 36-41
Link Here
|
| 36 |
char *__progname; |
36 |
char *__progname; |
| 37 |
#endif |
37 |
#endif |
| 38 |
|
38 |
|
|
|
39 |
/* libssh.a has xstrdup but it's link order won't link it in for static libs. |
| 40 |
* Therefore we have a private copy here. |
| 41 |
*/ |
| 42 |
static char * |
| 43 |
_xstrdup(const char *str) |
| 44 |
{ |
| 45 |
size_t len; |
| 46 |
char *cp; |
| 47 |
|
| 48 |
len = strlen(str) + 1; |
| 49 |
cp = xmalloc(len); |
| 50 |
strlcpy(cp, str, len); |
| 51 |
return cp; |
| 52 |
} |
| 53 |
|
| 39 |
/* |
54 |
/* |
| 40 |
* NB. duplicate __progname in case it is an alias for argv[0] |
55 |
* NB. duplicate __progname in case it is an alias for argv[0] |
| 41 |
* Otherwise it may get clobbered by setproctitle() |
56 |
* Otherwise it may get clobbered by setproctitle() |
|
Lines 45-51
Link Here
|
| 45 |
#ifdef HAVE___PROGNAME |
60 |
#ifdef HAVE___PROGNAME |
| 46 |
extern char *__progname; |
61 |
extern char *__progname; |
| 47 |
|
62 |
|
| 48 |
return xstrdup(__progname); |
63 |
return _xstrdup(__progname); |
| 49 |
#else |
64 |
#else |
| 50 |
char *p; |
65 |
char *p; |
| 51 |
|
66 |
|
|
Lines 57-63
Link Here
|
| 57 |
else |
72 |
else |
| 58 |
p++; |
73 |
p++; |
| 59 |
|
74 |
|
| 60 |
return (xstrdup(p)); |
75 |
return (_xstrdup(p)); |
| 61 |
#endif |
76 |
#endif |
| 62 |
} |
77 |
} |
| 63 |
|
78 |
|