On 09/22/14 at 10:45pm, Allan McRae wrote: > When we check the database version directly, there is no longer a > need to scan for depends files. > > Signed-off-by: Allan McRae <[email protected]> > --- > > It is much easier to look at the before and after here instead of the patch > directly. > > lib/libalpm/be_local.c | 25 ++++++++----------------- > 1 file changed, 8 insertions(+), 17 deletions(-) > > diff --git a/lib/libalpm/be_local.c b/lib/libalpm/be_local.c > index 1707a76..2b7260e 100644 > --- a/lib/libalpm/be_local.c > +++ b/lib/libalpm/be_local.c > @@ -398,9 +398,11 @@ static int local_db_validate(alpm_db_t *db) > { > struct dirent *ent = NULL; > const char *dbpath; > + DIR *dbdir; > char dbverpath[PATH_MAX]; > FILE *dbverfile; > - DIR *dbdir; > + int t; > + size_t version; > > if(db->status & DB_STATUS_VALID) { > return 0; > @@ -453,26 +455,15 @@ static int local_db_validate(alpm_db_t *db) > local_db_add_version(db, dbpath); > goto version_latest; > } > - fclose(dbverfile); > > - while((ent = readdir(dbdir)) != NULL) { > - const char *name = ent->d_name; > - char path[PATH_MAX]; > + t = fscanf(dbverfile, "%zu", &version); > + (void)t; > > - if(strcmp(name, ".") == 0 || strcmp(name, "..") == 0) { > - continue; > - } > - if(!is_dir(dbpath, ent)) { > - continue; > - } > + fclose(dbverfile); > > - snprintf(path, PATH_MAX, "%s%s/depends", dbpath, name); > - if(access(path, F_OK) == 0) { > - /* we found a depends file- bail */ > - goto version_error; > - } > + if(version != ALPM_LOCAL_DB_VERSION) {
Add a check for t here to make sure fscanf succeeded. If fscanf failed there's no telling what's in version, and you can get rid of the (void)t. > + goto version_error; > } > - /* we found no depends file after full scan */ > > version_latest: > closedir(dbdir); > -- > 2.1.0
