Exemplo n.º 1
0
// --------------------------------------------------------------------------
//
// Function
//      Name:    unsigned int ProcessControl::getUID(int)
//      Purpose: Obtiene el UID del usuario que ejecuta el PID dado
//      Created: 25/6/08
//
// ------------------
unsigned int ProcessControl::getUID(int pid)
{
    qDebug() << "ProcessControl::getUID: Begin:";
#ifndef WIN32
    int processuid=0;
    QString strpid, statusfilename;
    strpid.setNum(pid);
    statusfilename = QString("/proc/") + strpid + QString("/status");
    if (!QFile::exists(statusfilename)) return 0;
    QFile statusfile(statusfilename);
    if (!statusfile.open(QIODevice::ReadOnly | QIODevice::Text))
        return false;
    QTextStream in(&statusfile);
    QString line = in.readLine();
    QRegExp regex("^Uid:\\t(\\d*)\\t(\\d*)\\t(\\d*)\\t(\\d*)$");
    while(!line.isNull()){
        qDebug() << "ProcessControl::getUID: Parsing line:" << line;
        if (regex.exactMatch(line))
        {
            QStringList strlist = regex.capturedTexts();
            qDebug() << "ProcessControl::getUID: UID:" << strlist.at(2);
            processuid = strlist.at(2).toInt();
            break;
        } 
        line = in.readLine();
    }
    return processuid;
#else
	assert(false);
#endif
}
Exemplo n.º 2
0
main(int argc, char** argv) {
    int excludes = 0;

    program = argv[0];

    while (--argc,++argv, argc>=1 && ((*argv)[0] == '-')) {
        switch ((*argv)[1]) {
        case 'd':
        {
            --argc,++argv;
            if (argc == 0) {
                usage();
                exit(-1);
            }
            File f(*argv);
            if (!f.exists()) {
                fprintf(stderr, "Directory %s doesn\'t exist", *argv);
                fprintf(stderr, " (or needs to be file-name-expanded).\n");
                usage();
                exit(-1);
            }
            dirs.working = *argv;
        }
        break;
        case 'n':
            do_echo  = 1;
            break;
        case 's':
            save     = 0;
            break;
        case 'v':
            verbose  = 1;
            break;
        case 'e':
            excludes = 1;
            break;
        case 'r':
        {
            --argc,++argv;
            if (argc == 0) {
                usage();
                exit(-1);
            }
            forced_revision_number = *argv;
        }
        break;
        case 't':
        {
            --argc,++argv;
            if (argc == 0) {
                usage();
                exit(-1);
            }
            forced_revision_date = *argv;
        }
        break;
        case 'h':
            usage();
            exit(0);
        case '\0':
            goto done;
        default:
            fprintf(stderr, "Option %s unknown.\n", *argv);
            usage();
            exit(-1);
        }
    }
done:
    ;

    dirs.initialize();

    File statusfile(dirs.baseline, dirs.subdir->path, ".file_status");
    readBaseFileStatus(statusfile.path);

    if (excludes) {
        // process all files, excluding listed files
        stringNode* node;
        for(; argc>=1; --argc,++argv) {
            if (node = table.lookup(*argv)) {
                node->mark();
            }
        }
        processAllFilesInDir();
        scanTable();
    } else if (argc > 0) {
        // process only listed files
        for (; argc>=1; --argc,++argv) {
            processFileArgument(*argv);
        }
    } else {
        // normal case; process all files
        processAllFilesInDir();
        scanTable();
    }

    exit(0);
}