static int group_test_getgrnam(struct group *grp_model, void *mdata) { struct group *grp; if (debug) { printf("testing getgrnam() with the following data:\n"); dump_group(grp_model); } grp = getgrnam(grp_model->gr_name); if (group_test_correctness(grp, NULL) != 0) goto errfin; if ((compare_group(grp, grp_model, NULL) != 0) && (group_check_ambiguity((struct group_test_data *)mdata, grp) !=0)) goto errfin; if (debug) printf("ok\n"); return (0); errfin: if (debug) printf("not ok\n"); return (-1); }
static int group_test_getgrgid(struct group *grp_model, void *mdata) { struct group *grp; printf("testing getgrgid() with the following data...\n"); dump_group(grp_model); grp = getgrgid(grp_model->gr_gid); if (group_test_correctness(grp, NULL) != 0 || (compare_group(grp, grp_model, NULL) != 0 && group_check_ambiguity((struct group_test_data *)mdata, grp) != 0)) { return (-1); } else { return (0); } }
static int group_test_getgrgid(struct group *grp_model, void *mdata) { struct group *grp; if (debug) { printf("testing getgrgid() with the following data...\n"); dump_group(grp_model); } grp = getgrgid(grp_model->gr_gid); if ((group_test_correctness(grp, NULL) != 0) || ((compare_group(grp, grp_model, NULL) != 0) && (group_check_ambiguity((struct group_test_data *)mdata, grp) != 0))) { if (debug) printf("not ok\n"); return (-1); } else { if (debug) printf("ok\n"); return (0); } }
static int sort_dir_list(const void *one, const void *two) { /* TODO: refactor this function sort_dir_list(). */ int retval; const dir_entry_t *const first = one; const dir_entry_t *const second = two; const int first_is_dir = fentry_is_dir(first); const int second_is_dir = fentry_is_dir(second); if(first_is_dir && is_parent_dir(first->name)) { return -1; } if(second_is_dir && is_parent_dir(second->name)) { return 1; } retval = 0; switch(sort_type) { char *pfirst, *psecond; case SK_BY_NAME: case SK_BY_INAME: if(custom_view) { retval = compare_entry_names(first, second, sort_type == SK_BY_INAME); } else { retval = compare_full_file_names(first->name, second->name, sort_type == SK_BY_INAME); } break; case SK_BY_DIR: if(first_is_dir != second_is_dir) { retval = first_is_dir ? -1 : 1; } break; case SK_BY_TYPE: retval = strcmp(get_type_str(first->type), get_type_str(second->type)); break; case SK_BY_FILEEXT: case SK_BY_EXTENSION: pfirst = strrchr(first->name, '.'); psecond = strrchr(second->name, '.'); if(first_is_dir && second_is_dir && sort_type == SK_BY_FILEEXT) { retval = compare_file_names(first->name, second->name, 0); } else if(first_is_dir != second_is_dir && sort_type == SK_BY_FILEEXT) { retval = first_is_dir ? -1 : 1; } else if(pfirst && psecond) { if(pfirst == first->name && psecond != second->name) { retval = -1; } else if(pfirst != first->name && psecond == second->name) { retval = 1; } else { retval = compare_file_names(++pfirst, ++psecond, 0); } } else if(pfirst || psecond) retval = pfirst ? -1 : 1; else retval = compare_file_names(first->name, second->name, 0); break; case SK_BY_SIZE: retval = compare_file_sizes(first, second); break; case SK_BY_NITEMS: retval = compare_item_count(first, first_is_dir, second, second_is_dir); break; case SK_BY_GROUPS: retval = compare_group(first->name, second->name, sort_data); break; case SK_BY_TARGET: retval = compare_targets(first, second); break; case SK_BY_TIME_MODIFIED: retval = first->mtime - second->mtime; break; case SK_BY_TIME_ACCESSED: retval = first->atime - second->atime; break; case SK_BY_TIME_CHANGED: retval = first->ctime - second->ctime; break; #ifndef _WIN32 case SK_BY_MODE: retval = first->mode - second->mode; break; case SK_BY_INODE: retval = first->inode - second->inode; break; case SK_BY_OWNER_NAME: /* FIXME */ case SK_BY_OWNER_ID: retval = first->uid - second->uid; break; case SK_BY_GROUP_NAME: /* FIXME */ case SK_BY_GROUP_ID: retval = first->gid - second->gid; break; case SK_BY_PERMISSIONS: { char first_perm[11], second_perm[11]; get_perm_string(first_perm, sizeof(first_perm), first->mode); get_perm_string(second_perm, sizeof(second_perm), second->mode); retval = strcmp(first_perm, second_perm); } break; case SK_BY_NLINKS: retval = first->nlinks - second->nlinks; break; #endif } if(retval == 0) { retval = first->tag - second->tag; } else if(sort_descending) { retval = -retval; } return retval; }