static void terminate(void);
static void *findMain(void);
+char *strerrorcat(char *str, int err) {
+ char buf[8192];
+ strerror_r(err, buf, sizeof(buf));
+ strcat(str,buf);
+ return str;
+}
+char *strerrorcpy(char *str, int err) {
+ char buf[8192];
+ strerror_r(err, buf, sizeof(buf));
+ strcpy(str,buf);
+ return str;
+}
/* ARGSUSED */
void *dlopen(char *path, int mode)
if (mp == NULL) {
errvalid++;
strcpy(errbuf, "Newz: ");
- strcat(errbuf, strerror(errno));
+ strerrorcat(errbuf, errno);
return NULL;
}
if ((mp->name = savepv(path)) == NULL) {
errvalid++;
strcpy(errbuf, "savepv: ");
- strcat(errbuf, strerror(errno));
+ strerrorcat(errbuf, errno);
safefree(mp);
return NULL;
}
if (errno == ENOEXEC) {
char *tmp[BUFSIZ/sizeof(char *)];
if (loadquery(L_GETMESSAGES, tmp, sizeof(tmp)) == -1)
- strcpy(errbuf, strerror(errno));
+ strerrorcpy(errbuf, errno);
else {
char **p;
for (p = tmp; *p; p++)
caterr(*p);
}
} else
- strcat(errbuf, strerror(errno));
+ strerrorcat(errbuf, errno);
return NULL;
}
mp->refCnt = 1;
dlclose(mp);
errvalid++;
strcpy(errbuf, "loadbind: ");
- strcat(errbuf, strerror(errno));
+ strerrorcat(errbuf, errno);
return NULL;
}
if (readExports(mp) == -1) {
strcat(errbuf, p);
break;
case L_ERROR_ERRNO:
- strcat(errbuf, strerror(atoi(++p)));
+ strerrorcat(errbuf, atoi(++p));
break;
default:
strcat(errbuf, s);
result = unload(mp->entry);
if (result == -1) {
errvalid++;
- strcpy(errbuf, strerror(errno));
+ strerrorcpy(errbuf, errno);
}
if (mp->exports) {
register ExportPtr ep;
if (errno != ENOENT) {
errvalid++;
strcpy(errbuf, "readExports: ");
- strcat(errbuf, strerror(errno));
+ strerrorcat(errbuf, errno);
return -1;
}
/*
if ((buf = safemalloc(size)) == NULL) {
errvalid++;
strcpy(errbuf, "readExports: ");
- strcat(errbuf, strerror(errno));
+ strerrorcat(errbuf, errno);
return -1;
}
while ((i = loadquery(L_GETINFO, buf, size)) == -1 && errno == ENOMEM) {
if ((buf = safemalloc(size)) == NULL) {
errvalid++;
strcpy(errbuf, "readExports: ");
- strcat(errbuf, strerror(errno));
+ strerrorcat(errbuf, errno);
return -1;
}
}
if (i == -1) {
errvalid++;
strcpy(errbuf, "readExports: ");
- strcat(errbuf, strerror(errno));
+ strerrorcat(errbuf, errno);
safefree(buf);
return -1;
}
if (!ldp) {
errvalid++;
strcpy(errbuf, "readExports: ");
- strcat(errbuf, strerror(errno));
+ strerrorcat(errbuf, errno);
return -1;
}
}
if ((ldbuf = (char *)safemalloc(sh.s_size)) == NULL) {
errvalid++;
strcpy(errbuf, "readExports: ");
- strcat(errbuf, strerror(errno));
+ strerrorcat(errbuf, errno);
while(ldclose(ldp) == FAILURE)
;
return -1;
if (mp->exports == NULL) {
errvalid++;
strcpy(errbuf, "readExports: ");
- strcat(errbuf, strerror(errno));
+ strerrorcat(errbuf, errno);
safefree(ldbuf);
while(ldclose(ldp) == FAILURE)
;
if ((buf = safemalloc(size)) == NULL) {
errvalid++;
strcpy(errbuf, "findMain: ");
- strcat(errbuf, strerror(errno));
+ strerrorcat(errbuf, errno);
return NULL;
}
while ((i = loadquery(L_GETINFO, buf, size)) == -1 && errno == ENOMEM) {
if ((buf = safemalloc(size)) == NULL) {
errvalid++;
strcpy(errbuf, "findMain: ");
- strcat(errbuf, strerror(errno));
+ strerrorcat(errbuf, errno);
return NULL;
}
}
if (i == -1) {
errvalid++;
strcpy(errbuf, "findMain: ");
- strcat(errbuf, strerror(errno));
+ strerrorcat(errbuf, errno);
safefree(buf);
return NULL;
}