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

Reply via email to