{
char *whoami = argv[0];
char *dbNamePtr = 0;
- struct afsconf_cell cellinfo;
+ struct afsconf_cell cellinfo_s;
+ struct afsconf_cell *cellinfo = NULL;
time_t currentTime;
afs_int32 code = 0;
afs_uint32 host = ntohl(INADDR_ANY);
sigaction(SIGSEGV, &nsa, NULL);
sigaction(SIGABRT, &nsa, NULL);
#endif
+
+ memset(&cellinfo_s, 0, sizeof(cellinfo_s));
+ memset(clones, 0, sizeof(clones));
+
osi_audit_init();
osi_audit(BUDB_StartEvent, 0, AUD_END);
strcpy(cellConfDir, AFSDIR_SERVER_ETC_DIRPATH);
globalConfPtr->cellConfigdir = cellConfDir;
- /* open the log file */
-/*
- globalConfPtr->log = fopen(DEFAULT_LOGNAME,"a");
- if ( globalConfPtr->log == NULL )
- {
- printf("Can't open log file %s - aborting\n", DEFAULT_LOGNAME);
- BUDB_EXIT(-1);
- }
-*/
-
srandom(1);
#ifdef AFS_PTHREAD_ENV
BUDB_EXIT(0);
/* open the log file */
- globalConfPtr->log = fopen(AFSDIR_SERVER_BUDBLOG_FILEPATH, "a");
- if (globalConfPtr->log == NULL) {
- printf("Can't open log file %s - aborting\n",
- AFSDIR_SERVER_BUDBLOG_FILEPATH);
- BUDB_EXIT(-1);
- }
-
- /* keep log closed so can remove it */
-
- fclose(globalConfPtr->log);
+ OpenLog(AFSDIR_SERVER_BUDBLOG_FILEPATH);
/* open the cell's configuration directory */
LogDebug(4, "opening %s\n", globalConfPtr->cellConfigdir);
* list from the cell's database
*/
+ cellinfo = &cellinfo_s;
+
LogDebug(1, "Using server list from %s cell database.\n", lcell);
- code = afsconf_GetExtendedCellInfo (BU_conf, lcell, 0, &cellinfo,
+ code = afsconf_GetExtendedCellInfo (BU_conf, lcell, 0, cellinfo,
clones);
+ if (code) {
+ LogError(0, "Can't read cell information\n");
+ ERROR(code);
+ }
+
code =
- convert_cell_to_ubik(&cellinfo, &globalConfPtr->myHost,
+ convert_cell_to_ubik(cellinfo, &globalConfPtr->myHost,
globalConfPtr->serverList);
if (code)
ERROR(code);
/* Disable jumbograms */
rx_SetNoJumbo();
- code = ubik_ServerInitByInfo (globalConfPtr->myHost,
- htons(AFSCONF_BUDBPORT),
- &cellinfo,
- clones,
- dbNamePtr, /* name prefix */
- &BU_dbase);
+ if (cellinfo) {
+ code = ubik_ServerInitByInfo(globalConfPtr->myHost,
+ htons(AFSCONF_BUDBPORT),
+ cellinfo,
+ clones,
+ dbNamePtr, /* name prefix */
+ &BU_dbase);
+ } else {
+ code = ubik_ServerInit(globalConfPtr->myHost, htons(AFSCONF_BUDBPORT),
+ globalConfPtr->serverList,
+ dbNamePtr, /* name prefix */
+ &BU_dbase);
+ }
if (code) {
LogError(code, "Ubik init failed\n");
void
LogDebug(int level, char *fmt, ... )
{
- va_list ap;
-
- va_start(ap, fmt);
-
if (debugging >= level) {
- /* log normally closed so can remove it */
- globalConfPtr->log = fopen(AFSDIR_SERVER_BUDBLOG_FILEPATH, "a");
- if (globalConfPtr->log != NULL) {
- vfprintf(globalConfPtr->log, fmt, ap);
- fflush(globalConfPtr->log);
- fclose(globalConfPtr->log);
- }
+ va_list ap;
+ va_start(ap, fmt);
+ vFSLog(fmt, ap);
+ va_end(ap);
}
- va_end(ap);
-}
-
-static char *
-TimeStamp(time_t t)
-{
- struct tm *lt;
- static char timestamp[20];
-
- lt = localtime(&t);
- strftime(timestamp, 20, "%m/%d/%Y %H:%M:%S", lt);
- return timestamp;
}
void
Log(char *fmt, ...)
{
va_list ap;
- time_t now;
va_start(ap, fmt);
- globalConfPtr->log = fopen(AFSDIR_SERVER_BUDBLOG_FILEPATH, "a");
- if (globalConfPtr->log != NULL) {
- now = time(0);
- fprintf(globalConfPtr->log, "%s ", TimeStamp(now));
-
- vfprintf(globalConfPtr->log, fmt, ap);
- fflush(globalConfPtr->log);
- fclose(globalConfPtr->log);
- }
+ vFSLog(fmt, ap);
va_end(ap);
}
LogError(long code, char *fmt, ... )
{
va_list ap;
- time_t now;
+ int len;
+ char buffer[1024];
va_start(ap, fmt);
- globalConfPtr->log = fopen(AFSDIR_SERVER_BUDBLOG_FILEPATH, "a");
-
- if (globalConfPtr->log != NULL) {
- now = time(0);
- fprintf(globalConfPtr->log, "%s ", TimeStamp(now));
-
- if (code)
- fprintf(globalConfPtr->log, "%s: %s\n", afs_error_table_name(code),
- afs_error_message(code));
- vfprintf(globalConfPtr->log, fmt, ap );
- fflush(globalConfPtr->log);
- fclose(globalConfPtr->log);
+ len = vsnprintf(buffer, sizeof(buffer), fmt, ap);
+ va_end(ap);
+ if (len >= 1024) {
+ len = 1023;
+ buffer[1023] = '\0';
}
-}
-
-
-/* ----------------
- * debug
- * ----------------
- */
-
-void
-LogNetDump(struct dump *dumpPtr)
-{
- struct dump hostDump;
- extern buServerConfP globalConfPtr;
-
- dump_ntoh(dumpPtr, &hostDump);
-
- globalConfPtr->log = fopen(AFSDIR_SERVER_BUDBLOG_FILEPATH, "a");
- if (globalConfPtr->log != NULL) {
- printDump(globalConfPtr->log, &hostDump);
- fclose(globalConfPtr->log);
+ /* Be consistent with (unintentional?) historic behavior. */
+ if (code) {
+ FSLog("%s: %s\n", afs_error_table_name(code), afs_error_message(code));
+ WriteLogBuffer(buffer, len);
+ } else {
+ FSLog("%s", buffer);
}
}
-