Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 115714 Details for
Bug 173753
app-portage/portage-utils-0.1.25 - qcheck - Add toggles for individual checks/updates [PATCH]
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
portage-utils-0.1.25-add_qcheck_func.patch
portage-utils-0.1.25-add_qcheck_func.patch (text/plain), 7.21 KB, created by
Gordon Malm (RETIRED)
on 2007-04-08 10:45:10 UTC
(
hide
)
Description:
portage-utils-0.1.25-add_qcheck_func.patch
Filename:
MIME Type:
Creator:
Gordon Malm (RETIRED)
Created:
2007-04-08 10:45:10 UTC
Size:
7.21 KB
patch
obsolete
>diff -urP portage-utils-0.1.25-orig/applets.h portage-utils-0.1.25-modqcheck/applets.h >--- portage-utils-0.1.25-orig/applets.h 2007-04-05 11:26:01.000000000 -0700 >+++ portage-utils-0.1.25-modqcheck/applets.h 2007-04-08 03:00:35.000000000 -0700 >@@ -49,7 +49,7 @@ > {"q", q_main, "<applet> <args>", "virtual applet"}, > {"qatom", qatom_main, "<pkg>", "split atom strings"}, > {"qcache", qcache_main, "<action> <args>", "search the metadata cache"}, >- {"qcheck", qcheck_main, "<pkgname>", "verify mtimes/digests"}, >+ {"qcheck", qcheck_main, "<pkgname>", "verify file existence/mtimes/digests"}, > {"qdepends", qdepends_main, "<pkgname>", "show dependency info"}, > {"qfile", qfile_main, "<filename>", "list all pkgs owning files"}, > {"qglsa", qglsa_main, "<action> <list>", "check GLSAs against system"}, >diff -urP portage-utils-0.1.25-orig/qcheck.c portage-utils-0.1.25-modqcheck/qcheck.c >--- portage-utils-0.1.25-orig/qcheck.c 2007-04-05 11:26:01.000000000 -0700 >+++ portage-utils-0.1.25-modqcheck/qcheck.c 2007-04-08 02:58:46.000000000 -0700 >@@ -9,15 +9,21 @@ > > #ifdef APPLET_qcheck > >-#define QCHECK_FLAGS "au" COMMON_FLAGS >+#define QCHECK_FLAGS "auAHT" COMMON_FLAGS > static struct option const qcheck_long_opts[] = { > {"all", no_argument, NULL, 'a'}, > {"update", no_argument, NULL, 'u'}, >+ {"noafk", no_argument, NULL, 'A'}, >+ {"nohash", no_argument, NULL, 'H'}, >+ {"nomtime", no_argument, NULL, 'T'}, > COMMON_LONG_OPTS > }; > static const char *qcheck_opts_help[] = { > "List all packages", >- "Update chksum and mtimes for packages", >+ "Update missing files, chksum and mtimes for packages", >+ "Ignore missing files", >+ "Ignore differing/unknown file chksums", >+ "Ignore differing file mtimes", > COMMON_OPTS_HELP > }; > static const char qcheck_rcsid[] = "$Id: qcheck.c,v 1.31 2006/12/25 22:30:22 vapier Exp $"; >@@ -31,8 +37,11 @@ > struct dirent *dentry, *de; > char search_all = 0; > char qc_update = 0; >+ char chk_afk = 1; >+ char chk_hash = 1; >+ char chk_mtime = 1; > struct stat st; >- size_t num_files, num_files_ok, num_files_unknown; >+ size_t num_files, num_files_ok, num_files_unknown, num_files_ignored = 0; > char buf[_Q_PATH_MAX], filename[_Q_PATH_MAX]; > char buffer[_Q_PATH_MAX]; > >@@ -44,6 +53,9 @@ > COMMON_GETOPTS_CASES(qcheck) > case 'a': search_all = 1; break; > case 'u': qc_update = 1; break; >+ case 'A': chk_afk = 0; break; >+ case 'H': chk_hash = 0; break; >+ case 'T': chk_mtime = 0; break; > } > } > if ((argc == optind) && !search_all) >@@ -117,7 +129,14 @@ > ++num_files; > if (lstat(e->name, &st)) { > /* make sure file exists */ >- printf(" %sAFK%s: %s\n", RED, NORM, e->name); >+ if (chk_afk) { >+ printf(" %sAFK%s: %s\n", RED, NORM, e->name); >+ } else { >+ --num_files; >+ ++num_files_ignored; >+ if (qc_update) >+ fputs(buffer, fpx); >+ } > continue; > } > if (e->digest && S_ISREG(st.st_mode)) { >@@ -130,8 +149,15 @@ > default: hash_algo = 0; break; > } > if (!hash_algo) { >- printf(" %sUNKNOWN DIGEST%s: '%s' for '%s'\n", RED, NORM, e->digest, e->name); >- ++num_files_unknown; >+ if (chk_hash) { >+ printf(" %sUNKNOWN DIGEST%s: '%s' for '%s'\n", RED, NORM, e->digest, e->name); >+ ++num_files_unknown; >+ } else { >+ --num_files; >+ ++num_files_ignored; >+ if (qc_update) >+ fputs(buffer, fpx); >+ } > continue; > } > hashed_file = (char*)hash_file(e->name, hash_algo); >@@ -143,52 +169,70 @@ > } > printf(" %sPERM %4o%s: %s\n", RED, (st.st_mode & 07777), NORM, e->name); > ++num_files_unknown; >+ free(hashed_file); > continue; > } else if (strcmp(e->digest, hashed_file)) { >- const char *digest_disp; >- if (qc_update) { >- fprintf(fpx, "obj %s %s %lu\n", e->name, hashed_file, st.st_mtime); >- if (!verbose) >- goto free_and_more_hash; >+ if (chk_hash) { >+ const char *digest_disp; >+ if (qc_update) { >+ fprintf(fpx, "obj %s %s %lu\n", e->name, hashed_file, st.st_mtime); >+ } >+ switch (hash_algo) { >+ case HASH_MD5: digest_disp = "MD5"; break; >+ case HASH_SHA1: digest_disp = "SHA1"; break; >+ default: digest_disp = "UNK"; break; >+ } >+ printf(" %s%s-DIGEST%s: %s", RED, digest_disp, NORM, e->name); >+ if (verbose) >+ printf(" (recorded '%s' != actual '%s')", e->digest, hashed_file); >+ printf("\n"); >+ } else { >+ --num_files; >+ ++num_files_ignored; >+ if (qc_update) >+ fputs(buffer, fpx); > } >- switch (hash_algo) { >- case HASH_MD5: digest_disp = "MD5"; break; >- case HASH_SHA1: digest_disp = "SHA1"; break; >- default: digest_disp = "UNK"; break; >- } >- printf(" %s%s-DIGEST%s: %s", RED, digest_disp, NORM, e->name); >- if (verbose) >- printf(" (recorded '%s' != actual '%s')", e->digest, hashed_file); >- printf("\n"); >-free_and_more_hash: > free(hashed_file); > continue; > } else if (e->mtime && e->mtime != st.st_mtime) { >+ if (chk_mtime) { >+ printf(" %sMTIME%s: %s", RED, NORM, e->name); >+ if (verbose) >+ printf(" (recorded '%lu' != actual '%lu')", e->mtime, (unsigned long)st.st_mtime); >+ printf("\n"); >+ >+ /* This can only be an obj, dir and sym have no digest */ >+ if (qc_update) >+ fprintf(fpx, "obj %s %s %lu\n", e->name, e->digest, st.st_mtime); >+ } else { >+ --num_files; >+ ++num_files_ignored; >+ if (qc_update) >+ fputs(buffer, fpx); >+ } >+ free(hashed_file); >+ continue; >+ } else { >+ if (qc_update) >+ fputs(buffer, fpx); >+ free(hashed_file); >+ } >+ } else if (e->mtime && e->mtime != st.st_mtime) { >+ if (chk_mtime) { > printf(" %sMTIME%s: %s", RED, NORM, e->name); > if (verbose) > printf(" (recorded '%lu' != actual '%lu')", e->mtime, (unsigned long)st.st_mtime); > printf("\n"); > >- /* This can only be an obj, dir and sym have no digest */ >+ /* This can only be a sym */ > if (qc_update) >- fprintf(fpx, "obj %s %s %lu\n", e->name, e->digest, st.st_mtime); >- >- continue; >+ fprintf(fpx, "sym %s -> %s %lu\n", e->name, e->sym_target, st.st_mtime); > } else { >+ --num_files; >+ ++num_files_ignored; > if (qc_update) > fputs(buffer, fpx); >- free(hashed_file); > } >- } else if (e->mtime && e->mtime != st.st_mtime) { >- printf(" %sMTIME%s: %s", RED, NORM, e->name); >- if (verbose) >- printf(" (recorded '%lu' != actual '%lu')", e->mtime, (unsigned long)st.st_mtime); >- printf("\n"); >- >- /* This can only be a sym */ >- if (qc_update) >- fprintf(fpx, "sym %s -> %s %lu\n", e->name, e->sym_target, st.st_mtime); >- > continue; > } else { > if (qc_update) >@@ -216,6 +260,10 @@ > printf(" %2$s*%1$s Unable to digest %3$s%4$lu%1$s file%5$s\n", > NORM, BOLD, BLUE, (unsigned long)num_files_unknown, > (num_files_unknown > 1 ? "s" : "")); >+ if (num_files_ignored) >+ printf(" %2$s*%1$s %3$s%4$lu%1$s file%5$s ignored\n", >+ NORM, BOLD, BLUE, (unsigned long)num_files_ignored, >+ (num_files_ignored > 1 ? "s were" : " was")); > } > closedir(dirp); > chdir("..");
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 173753
:
115714
|
115716
|
115736
|
115762
|
115766
|
115770
|
118962