#include <dirent.h>
#include <errno.h>
#include <sys/types.h>
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
#ifdef AFS_NT40_ENV
#include <io.h>
#else
int weirdPids;
} bnode_stats;
+extern const char *DoCore;
#ifndef AFS_NT40_ENV
extern char **environ; /* env structure */
#endif
int
bnode_CoreName(register struct bnode *abnode, char *acoreName, char *abuffer)
{
- strcpy(abuffer, AFSDIR_SERVER_CORELOG_FILEPATH);
+ if (DoCore) {
+ strcpy(abuffer, DoCore);
+ strcat(abuffer, "/");
+ strcat(abuffer, AFSDIR_CORE_FILE);
+ } else
+ strcpy(abuffer, AFSDIR_SERVER_CORELOG_FILEPATH);
if (acoreName) {
strcat(abuffer, acoreName);
strcat(abuffer, ".");
{
char tbuffer[256];
struct stat tstat;
- register afs_int32 code;
+ register afs_int32 code = 0;
char *corefile = NULL;
#ifdef BOZO_SAVE_CORES
struct timeval Start;
/* Linux always appends the PID to core dumps from threaded processes, so
* we have to scan the directory to find core files under another name. */
- code = stat(AFSDIR_SERVER_CORELOG_FILEPATH, &tstat);
+ if (DoCore) {
+ strcpy(tbuffer, DoCore);
+ strcat(tbuffer, "/");
+ strcat(tbuffer, AFSDIR_CORE_FILE);
+ } else
+ code = stat(AFSDIR_SERVER_CORELOG_FILEPATH, &tstat);
if (code) {
DIR *logdir;
struct dirent *file;
size_t length;
unsigned long pid;
+ const char *coredir = AFSDIR_LOGS_DIR;
+
+ if (DoCore)
+ coredir = DoCore;
- logdir = opendir(AFSDIR_LOGS_DIR);
+ logdir = opendir(coredir);
if (logdir == NULL)
return;
while ((file = readdir(logdir)) != NULL) {
continue;
pid = atol(file->d_name + 5);
if (pid == aproc->pid) {
- length = strlen(AFSDIR_LOGS_DIR) + strlen(file->d_name) + 2;
+ length = strlen(coredir) + strlen(file->d_name) + 2;
corefile = malloc(length);
if (corefile == NULL) {
closedir(logdir);
return;
}
- snprintf(corefile, length, "%s/%s", AFSDIR_LOGS_DIR,
- file->d_name);
+ snprintf(corefile, length, "%s/%s", coredir, file->d_name);
code = 0;
break;
}
}
closedir(logdir);
+ } else {
+ corefile = strdup(tbuffer);
}
if (code)
return;
TimeFields->tm_hour, TimeFields->tm_min, TimeFields->tm_sec);
strcpy(tbuffer, FileName);
#endif
- if (corefile == NULL)
- code = renamefile(AFSDIR_SERVER_CORELOG_FILEPATH, tbuffer);
- else {
- code = renamefile(corefile, tbuffer);
- free(corefile);
- }
+ code = renamefile(corefile, tbuffer);
+ free(corefile);
}
int