Ejemplo n.º 1
0
static void ProcessEachDataDirectory(char *userDataDir)
// PEDD assumes we are cd\'d into the user's directory that contains
// data directories (e.g. /coda/usr/<foo>/.questionnaires
// PEU takes care of this!
{
    char currentDataSubdir[MAXPATHLEN];
    struct direct **nameList;
    int rc;

    int numdirs = scandir(".", &(nameList), (PFI)select_nodot, NULL);

    if (numdirs == 0) {
        LogMsg(20, LogLevel, LogFile, "No data subdirectories in %s",
               userDataDir);
        return;
    }

    for (int i = 0; i < numdirs; i++) {
        if ((rc = chdir(nameList[i]->d_name)) == 0) {
            sprintf(currentDataSubdir, "%s/%s", userDataDir,
                    nameList[i]->d_name);
            LogMsg(100, LogLevel, LogFile, "Processing datadir: %s",
                   currentDataSubdir);
            GetFilesAndSpool(currentDataSubdir);
            if (chdir("..") != 0) {
                LogMsg(0, LogLevel, LogFile, "Could not cd to .. (errno=%d)",
                       errno);
                exit(EXIT_FAILURE);
            }
        } else {
            switch (errno) {
            case ENOTDIR:
                LogMsg(20, LogLevel, LogFile, "Ignoring %s",
                       nameList[i]->d_name);
                continue;
            case EACCES:
                LogMsg(0, LogLevel, LogFile, "No access rights for %s",
                       nameList[i]->d_name);
                continue;
            default:
                LogMsg(0, LogLevel, LogFile,
                       "Could not cd into %s for unknown reason (errno=%d)",
                       nameList[i]->d_name, errno);
                continue;
            }
        }
    }
}
Ejemplo n.º 2
0
main (int argc, char *argv[])
{
    if (TestAndLock()) {
	fprintf(stderr,
		"Another unwind running or abandoned, please check\n");
	exit(-1);
    }
    ParseArgs(argc, argv);
    InitSignals();
    InitLog();
    if (chdir(WorkingDir)) {
	RemoveLock();
	Die("Could not cd into %s",WorkingDir);
    }
    if (InitDB(DataBaseName)) {
	RemoveLock();
	fprintf(stderr,"Could not connect to database %s",DataBaseName);
	exit(-1);
    }
    GetFilesAndSpool();
    RemoveLock();
    Log_Done();
}