Ejemplo n.º 1
0
int handle_add(const char* path) {
    char dir[MAXPATHLEN], filename[256], buf[1024];
    DB_VDA_FILE vf;
    POLICY policy;
    double size;
    int retval;

    retval = file_size(path, size);
    if (retval) {
        printf("no file %s\n", path);
        return -1;
    }

    safe_strcpy(dir, path);
    char* p = strrchr(dir, '/');
    *p = 0;
    safe_strcpy(filename, p+1);

    // make sure there's a valid policy file in the dir
    //
    sprintf(buf, "%s/boinc_meta.txt", dir);
    retval = policy.parse(buf);
    if (retval) {
        printf("Can't parse policy file.\n");
        return -1;
    }

    // add a DB record and mark it for update
    //
    vf.create_time = dtime();
    safe_strcpy(vf.dir, dir);
    safe_strcpy(vf.file_name, filename);
    vf.size = size;
    vf.chunk_size = 0;  // don't know this yet; set by vdad
    vf.need_update = 1;
    vf.initialized = 0;
    vf.retrieving = 0;
    vf.retrieved = 0;
    retval = vf.insert();
    if (retval) {
        printf("Can't insert DB record\n");
        return -1;
    }
    return 0;
}