@ -1,30 +0,0 @@ |
|||||
# --- ROCK-COPYRIGHT-NOTE-BEGIN --- |
|
||||
# |
|
||||
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. |
|
||||
# Please add additional copyright information _after_ the line containing |
|
||||
# the ROCK-COPYRIGHT-NOTE-END tag. Otherwise it might get removed by |
|
||||
# the ./scripts/Create-CopyPatch script. Do not edit this copyright text! |
|
||||
# |
|
||||
# ROCK Linux: rock-src/package/base/mine/helptext.patch |
|
||||
# ROCK Linux is Copyright (C) 1998 - 2006 Clifford Wolf |
|
||||
# |
|
||||
# This patch file is dual-licensed. It is available under the license the |
|
||||
# patched project is licensed under, as long as it is an OpenSource license |
|
||||
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms |
|
||||
# of the GNU General Public License as published by the Free Software |
|
||||
# Foundation; either version 2 of the License, or (at your option) any later |
|
||||
# version. |
|
||||
# |
|
||||
# --- ROCK-COPYRIGHT-NOTE-END --- |
|
||||
|
|
||||
--- ./mine.c~ 2005-08-09 12:57:29.000000000 +0200
|
|
||||
+++ ./mine.c 2005-09-19 18:03:50.000000000 +0200
|
|
||||
@@ -122,7 +122,7 @@
|
|
||||
"E.g. this will create a GEM file from the mine package installed in /:\n" |
|
||||
"\n" |
|
||||
" mine -T /var/adm / mine mine.tar.bz2\n" |
|
||||
-" mine -C /var/adm mine.tar.bz2 mine.gem\n"
|
|
||||
+" mine -C /var/adm mine.tar.bz2 mine mine.gem\n"
|
|
||||
"\n" |
|
||||
"Hint: After installing, updating or removing packages you should run the\n" |
|
||||
" scripts 'cron.run' and 'postinstall'. This updates some important\n" |
|
@ -1,238 +0,0 @@ |
|||||
diff -dur mine-0.24/install.c mine-0.24-patch/install.c
|
|
||||
--- mine-0.24/install.c 2006-04-27 20:14:38.000000000 +0200
|
|
||||
+++ mine-0.24-patch/install.c 2006-04-27 20:15:52.000000000 +0200
|
|
||||
@@ -54,16 +54,19 @@
|
|
||||
int gem2bunzip[2] = { -1, -1 }; |
|
||||
int bunzip2tar[2] = { -1, -1 }; |
|
||||
|
|
||||
- char * pname = NULL;
|
|
||||
+ char *pname = NULL, *pbasename = NULL;
|
|
||||
int gem_fd = -1; |
|
||||
struct cdb c; |
|
||||
int pos, len; |
|
||||
int rc; |
|
||||
|
|
||||
- char *filename;
|
|
||||
+ char *filename = 0;
|
|
||||
char buffer[1024]; |
|
||||
char buffer2[1024]; |
|
||||
char buffer3[1024]; |
|
||||
+ char buffer4[1024];
|
|
||||
+ char cksums_buf[1024];
|
|
||||
+ char md5sums_buf[1024];
|
|
||||
TAR *t = NULL; |
|
||||
BZFILE *b = NULL; |
|
||||
|
|
||||
@@ -77,8 +80,18 @@
|
|
||||
if ( rc <= 0 ) goto error; |
|
||||
pos = cdb_datapos(&c); len = cdb_datalen(&c); |
|
||||
pname = malloc(len+1); pname[len] = 0; |
|
||||
+
|
|
||||
if (cdb_read(&c, pname, len, pos) == -1) goto error; |
|
||||
|
|
||||
+ if ((pbasename = strchr(pname, ':')) != NULL)
|
|
||||
+ {
|
|
||||
+ int baselen = (pbasename - pname);
|
|
||||
+ pbasename = malloc(baselen+1);
|
|
||||
+ snprintf (pbasename, baselen+1, pname);
|
|
||||
+ pbasename[baselen] = 0;
|
|
||||
+ } else
|
|
||||
+ pbasename = pname;
|
|
||||
+
|
|
||||
pipe(gem2bunzip); |
|
||||
pipe(bunzip2tar); |
|
||||
|
|
||||
@@ -152,10 +165,88 @@
|
|
||||
} |
|
||||
} |
|
||||
|
|
||||
+ snprintf(buffer, sizeof(buffer), "%s/var/adm/flists/%s", root, pname);
|
|
||||
+ FILE *old_flist = fopen(buffer, "r");
|
|
||||
+ snprintf(buffer, sizeof(buffer), "%s/var/adm/cksums/%s", root, pname);
|
|
||||
+ FILE *old_cksums = fopen(buffer, "r");
|
|
||||
+ snprintf(buffer, sizeof(buffer), "%s/var/adm/md5sums/%s", root, pname);
|
|
||||
+ FILE *old_md5sums = fopen(buffer, "r");
|
|
||||
+
|
|
||||
+ FILE *purgme_flist = 0, *purgme_cksums = 0, *purgme_md5sums = 0;
|
|
||||
filename = 0; |
|
||||
+ char *old_filename = 0;
|
|
||||
+ int old_file_printed = 0;
|
|
||||
while (th_read(t) == 0) |
|
||||
{ |
|
||||
filename = th_get_pathname(t); |
|
||||
+
|
|
||||
+ /* Here we check for 'obsolete' files, which are in the old
|
|
||||
+ package version, but not in the new one. Obsolete files are
|
|
||||
+ added to *:legacy packages for easy removal. */
|
|
||||
+ if (old_flist != NULL && old_filename == NULL && fgets(buffer4, 1024, old_flist) != NULL)
|
|
||||
+ {
|
|
||||
+ fgets(cksums_buf, 1024, old_cksums);
|
|
||||
+ fgets(md5sums_buf, 1024, old_md5sums);
|
|
||||
+
|
|
||||
+ strtok(buffer4, " \t\n");
|
|
||||
+ old_filename = strtok(NULL, "\n");
|
|
||||
+ old_file_printed = 0;
|
|
||||
+ }
|
|
||||
+ if (old_filename != NULL)
|
|
||||
+ {
|
|
||||
+ while (strcmp(old_filename, filename) < 0)
|
|
||||
+ {
|
|
||||
+ snprintf(buffer, sizeof(buffer), "%s/%s", root, old_filename);
|
|
||||
+ struct stat statbuf;
|
|
||||
+ if (stat (buffer, &statbuf) != 0) { /* Ignore */ }
|
|
||||
+ if (! S_ISDIR(statbuf.st_mode))
|
|
||||
+ {
|
|
||||
+ if (old_file_printed == 0 && purgme_flist == NULL)
|
|
||||
+ {
|
|
||||
+ snprintf(buffer, sizeof(buffer), "%s/var/adm/flists/%s:legacy", root, pbasename);
|
|
||||
+ purgme_flist = fopen(buffer, "a");
|
|
||||
+ snprintf(buffer, sizeof(buffer), "%s/var/adm/cksums/%s:legacy", root, pbasename);
|
|
||||
+ purgme_cksums = fopen(buffer, "a");
|
|
||||
+ snprintf(buffer, sizeof(buffer), "%s/var/adm/md5sums/%s:legacy", root, pbasename);
|
|
||||
+ purgme_md5sums = fopen(buffer, "a");
|
|
||||
+ snprintf(buffer, sizeof(buffer), "%s/var/adm/packages/%s:legacy", root, pbasename);
|
|
||||
+ FILE *purgme_packages = fopen(buffer, "w");
|
|
||||
+ snprintf(buffer, sizeof(buffer), "%s/var/adm/packages/%s", root, pname);
|
|
||||
+ FILE *old_packages = fopen(buffer, "r");
|
|
||||
+
|
|
||||
+ snprintf(buffer, sizeof(buffer), "Package Name and Version: %s:legacy 0000 0\n", pbasename);
|
|
||||
+ fputs(buffer, purgme_packages);
|
|
||||
+
|
|
||||
+ fgets(buffer, 1024, old_packages);
|
|
||||
+ while (fgets(buffer, 1024, old_packages)) {
|
|
||||
+ if (fputs(buffer, purgme_packages) == EOF) goto error_errno;
|
|
||||
+ }
|
|
||||
+
|
|
||||
+ fclose(old_packages);
|
|
||||
+ fclose(purgme_packages);
|
|
||||
+ }
|
|
||||
+
|
|
||||
+ if (old_file_printed == 0)
|
|
||||
+ {
|
|
||||
+ fprintf(purgme_flist, "%s:legacy: %s\n", pbasename, old_filename);
|
|
||||
+ fprintf(purgme_cksums, "%s", cksums_buf);
|
|
||||
+ fprintf(purgme_md5sums, "%s", md5sums_buf);
|
|
||||
+ old_file_printed = 1;
|
|
||||
+ }
|
|
||||
+ } /* ! (S_ISDIR(statbuf.st_mode)) */
|
|
||||
+
|
|
||||
+ if (fgets(buffer4, 1024, old_flist) == NULL) break;
|
|
||||
+
|
|
||||
+ fgets(cksums_buf, 1024, old_cksums);
|
|
||||
+ fgets(md5sums_buf, 1024, old_md5sums);
|
|
||||
+
|
|
||||
+ strtok(buffer4, " \t\n");
|
|
||||
+ old_filename = strtok(NULL, "\n");
|
|
||||
+ old_file_printed = 0;
|
|
||||
+ }
|
|
||||
+ if (strcmp(old_filename, filename) == 0) old_file_printed = 1;
|
|
||||
+ }
|
|
||||
+
|
|
||||
snprintf(buffer, sizeof(buffer), "%s/%s", root, filename); |
|
||||
snprintf(buffer2, sizeof(buffer), "%s.GEMnew", buffer); |
|
||||
snprintf(buffer3, sizeof(buffer), "%s.GEMold", buffer); |
|
||||
@@ -221,10 +312,83 @@
|
|
||||
} |
|
||||
} |
|
||||
|
|
||||
+ if (filename != NULL && old_filename != NULL &&
|
|
||||
+ strcmp(old_filename, filename) > 0)
|
|
||||
+ {
|
|
||||
+ if (purgme_flist == NULL)
|
|
||||
+ {
|
|
||||
+ snprintf(buffer, sizeof(buffer), "%s/var/adm/flists/%s:legacy", root, pbasename);
|
|
||||
+ purgme_flist = fopen(buffer, "a");
|
|
||||
+ snprintf(buffer, sizeof(buffer), "%s/var/adm/cksums/%s:legacy", root, pbasename);
|
|
||||
+ purgme_cksums = fopen(buffer, "a");
|
|
||||
+ snprintf(buffer, sizeof(buffer), "%s/var/adm/md5sums/%s:legacy", root, pbasename);
|
|
||||
+ purgme_md5sums = fopen(buffer, "a");
|
|
||||
+ snprintf(buffer, sizeof(buffer), "%s/var/adm/packages/%s:legacy", root, pbasename);
|
|
||||
+ FILE *purgme_packages = fopen(buffer, "w");
|
|
||||
+ snprintf(buffer, sizeof(buffer), "%s/var/adm/packages/%s", root, pname);
|
|
||||
+ FILE *old_packages = fopen(buffer, "r");
|
|
||||
+
|
|
||||
+ snprintf(buffer, sizeof(buffer), "Package Name and Version: %s:legacy 0000 0\n", pbasename);
|
|
||||
+ fputs(buffer, purgme_packages);
|
|
||||
+
|
|
||||
+ fgets(buffer, 1024, old_packages);
|
|
||||
+ while (fgets(buffer, 1024, old_packages)) {
|
|
||||
+ if (fputs(buffer, purgme_packages) == EOF) goto error_errno;
|
|
||||
+ }
|
|
||||
+
|
|
||||
+ fclose(old_packages);
|
|
||||
+ fclose(purgme_packages);
|
|
||||
+ }
|
|
||||
+ while (1) {
|
|
||||
+ snprintf(buffer, sizeof(buffer), "%s/%s", root, old_filename);
|
|
||||
+ struct stat statbuf;
|
|
||||
+ if (stat (buffer, &statbuf) != 0) { /* Ignore */ }
|
|
||||
+ if (! S_ISDIR(statbuf.st_mode))
|
|
||||
+ {
|
|
||||
+ fprintf(purgme_flist, "%s:legacy: %s\n", pbasename, old_filename);
|
|
||||
+ fprintf(purgme_cksums, "%s", cksums_buf);
|
|
||||
+ fprintf(purgme_md5sums, "%s", md5sums_buf);
|
|
||||
+ }
|
|
||||
+
|
|
||||
+ if (fgets(buffer4, 1024, old_flist) == NULL) break;
|
|
||||
+
|
|
||||
+ fgets(cksums_buf, 1024, old_cksums);
|
|
||||
+ fgets(md5sums_buf, 1024, old_md5sums);
|
|
||||
+
|
|
||||
+ strtok(buffer4, " \t\n");
|
|
||||
+ old_filename = strtok(NULL, "\n");
|
|
||||
+ old_file_printed = 0;
|
|
||||
+ };
|
|
||||
+ }
|
|
||||
+
|
|
||||
+ /* Finish *:legacy package, if existent */
|
|
||||
+ if (purgme_flist != NULL)
|
|
||||
+ {
|
|
||||
+ fclose(purgme_cksums);
|
|
||||
+ snprintf(buffer, sizeof(buffer), "%s:legacy: var/adm/cksums/%s:legacy\n", pbasename, pbasename);
|
|
||||
+ fprintf(purgme_flist, buffer);
|
|
||||
+ snprintf(buffer, sizeof(buffer), "%s:legacy: var/adm/flists/%s:legacy\n", pbasename, pbasename);
|
|
||||
+ fprintf(purgme_flist, buffer);
|
|
||||
+ snprintf(buffer, sizeof(buffer), "%s:legacy: var/adm/md5sums/%s:legacy\n", pbasename, pbasename);
|
|
||||
+ fprintf(purgme_flist, buffer);
|
|
||||
+ snprintf(buffer, sizeof(buffer), "%s:legacy: var/adm/packages/%s:legacy\n", pbasename, pbasename);
|
|
||||
+ fprintf(purgme_flist, buffer);
|
|
||||
+ fclose(purgme_flist);
|
|
||||
+
|
|
||||
+ snprintf(buffer2, sizeof(buffer2), "var/adm/flists/%s:legacy", pbasename);
|
|
||||
+ snprintf(buffer, sizeof(buffer), "%s %s\n", md5sum_create(root, buffer2), buffer2);
|
|
||||
+ fprintf(purgme_md5sums, buffer);
|
|
||||
+ fclose(purgme_md5sums);
|
|
||||
+ }
|
|
||||
+
|
|
||||
tar_close(t); close(bunzip2tar[0]); |
|
||||
cdb_free(&c); close(gem_fd); |
|
||||
|
|
||||
if ( logfile != NULL ) fclose(logfile); |
|
||||
+ if ( old_flist != NULL ) fclose(old_flist);
|
|
||||
+
|
|
||||
+ if (pname != pbasename) free(pbasename);
|
|
||||
+ free(pname);
|
|
||||
|
|
||||
return 0; |
|
||||
|
|
||||
@@ -233,7 +397,7 @@
|
|
||||
|
|
||||
error_errno: |
|
||||
fprintf(stderr, "While installing GEM file %s%s%s%s: %s\n", package, |
|
||||
- filename?" (":"", filename?filename:"", filename?"(":"",
|
|
||||
+ filename?" (":"", filename?filename:"", filename?")":"",
|
|
||||
errno ? strerror(errno) : "Unknown error"); |
|
||||
if ( t != NULL) tar_close(t); |
|
||||
if ( gem_fd != -1 ) { cdb_free(&c); close(gem_fd); } |
|
||||
diff -dur mine-0.24/TODO mine-0.24-patch/TODO
|
|
||||
--- mine-0.24/TODO 2006-04-27 20:14:30.000000000 +0200
|
|
||||
+++ mine-0.24-patch/TODO 2006-04-27 20:15:56.000000000 +0200
|
|
||||
@@ -1,5 +1,7 @@
|
|
||||
|
|
||||
Todos: |
|
||||
|
|
||||
- - Remove old files when updating a package (?)
|
|
||||
+ - When mine adds files to a legacy package, it does not remove possible
|
|
||||
+ duplicate entries in var/adm/{flists,cksums,md5sums} resulting in
|
|
||||
+ bogus shared files.
|
|
||||
|
|
@ -1,11 +0,0 @@ |
|||||
--- ./rocket.sh.orig 2006-07-13 20:14:25.000000000 +0200
|
|
||||
+++ ./rocket.sh 2006-07-13 20:14:33.000000000 +0200
|
|
||||
@@ -232,7 +232,7 @@
|
|
||||
while read keyword p1 p2 p3 p4 p5 rest; do |
|
||||
case "$keyword" in |
|
||||
archive) |
|
||||
- [ -n "$p2" ] || file="packages.db"
|
|
||||
+ [ -n "$p2" ] || p2="packages.db"
|
|
||||
upd_archive "$p1" "$p1/$p2" \ |
|
||||
"$ignore_list" "$ignore_list_deps" |
|
||||
;; |
|
@ -1,185 +0,0 @@ |
|||||
diff -dur mine-0.24/check.c mine-0.24-patch/check.c
|
|
||||
--- mine-0.24/check.c 2005-09-30 12:34:36.000000000 +0200
|
|
||||
+++ mine-0.24-patch/check.c 2006-04-27 20:14:38.000000000 +0200
|
|
||||
@@ -72,9 +72,14 @@
|
|
||||
strtok(buffer, " \t\n"); |
|
||||
filename = strtok(NULL, "\n"); |
|
||||
|
|
||||
- if ( md5sum_check(root, filename) ) {
|
|
||||
- printf("Modified/duplicate "
|
|
||||
- "file: %s\n", filename);
|
|
||||
+ int result = 0;
|
|
||||
+ if ( result = md5sum_check(root, filename) ) {
|
|
||||
+ switch (result) {
|
|
||||
+ case MD5SUM_CHECK_DUPLICATE: printf("Duplicate "); break;
|
|
||||
+ case MD5SUM_CHECK_MODIFIED: printf("Modified "); break;
|
|
||||
+ case MD5SUM_CHECK_SHARED: printf("Shared "); break;
|
|
||||
+ }
|
|
||||
+ printf("file: %s\n", filename);
|
|
||||
modified++; |
|
||||
} |
|
||||
} |
|
||||
diff -dur mine-0.24/install.c mine-0.24-patch/install.c
|
|
||||
--- mine-0.24/install.c 2006-04-27 21:06:40.000000000 +0200
|
|
||||
+++ mine-0.24-patch/install.c 2006-04-27 20:15:52.000000000 +0200
|
|
||||
@@ -256,6 +256,7 @@
|
|
||||
unlink(buffer3); |
|
||||
} |
|
||||
|
|
||||
+ int result = 0;
|
|
||||
if (patterns && glob_check(patterns, filename)) { |
|
||||
if ( mode_verbose ) { |
|
||||
printf("Exclude glob " |
|
||||
@@ -265,15 +266,22 @@
|
|
||||
if (TH_ISREG(t) && tar_skip_regfile(t) != 0) |
|
||||
goto error_errno; |
|
||||
} |
|
||||
- else if ( ! mode_force && md5sum_check(root, filename) ) {
|
|
||||
+ else if ( ! mode_force && (result = md5sum_check(root, filename)) ) {
|
|
||||
+ if ( ! mode_test || ! mode_verbose )
|
|
||||
+ printf("%s: ", pname);
|
|
||||
+ printf("WARNING: Skip ");
|
|
||||
+ switch (result) {
|
|
||||
+ case MD5SUM_CHECK_DUPLICATE: printf("duplicate "); break;
|
|
||||
+ case MD5SUM_CHECK_MODIFIED: printf("modified "); break;
|
|
||||
+ case MD5SUM_CHECK_SHARED: printf("shared "); break;
|
|
||||
+ }
|
|
||||
+ printf("file %s", filename);
|
|
||||
if ( mode_test && mode_verbose ) { |
|
||||
- printf("WARNING: Skip modified/duplicate "
|
|
||||
- "file %s:\n", filename);
|
|
||||
+ printf(":\n");
|
|
||||
th_print_long_ls(t); |
|
||||
- } else {
|
|
||||
- printf("%s: WARNING: Skip modified/duplicate "
|
|
||||
- "file: %s\n", pname, filename);
|
|
||||
- }
|
|
||||
+ } else
|
|
||||
+ printf(".\n");
|
|
||||
+
|
|
||||
if ( mode_test ) { |
|
||||
if (TH_ISREG(t) && tar_skip_regfile(t) != 0) |
|
||||
goto error_errno; |
|
||||
diff -dur mine-0.24/md5sum.c mine-0.24-patch/md5sum.c
|
|
||||
--- mine-0.24/md5sum.c 2005-08-09 12:57:29.000000000 +0200
|
|
||||
+++ mine-0.24-patch/md5sum.c 2006-04-27 21:11:22.000000000 +0200
|
|
||||
@@ -20,6 +20,7 @@
|
|
||||
#include <stdio.h> |
|
||||
#include <dirent.h> |
|
||||
#include <string.h> |
|
||||
+#include <sys/types.h>
|
|
||||
#include <sys/stat.h> |
|
||||
#include <unistd.h> |
|
||||
|
|
||||
@@ -37,35 +38,42 @@
|
|
||||
struct stat statbuf; |
|
||||
|
|
||||
snprintf(realfilename, 1024, "%s/%s", root, filename); |
|
||||
- return (stat(realfilename, &statbuf) != 0 || S_ISFIFO(statbuf.st_mode))
|
|
||||
- ? "" : md5_file(realfilename);
|
|
||||
+ if (lstat(realfilename, &statbuf) != 0 || S_ISDIR(statbuf.st_mode))
|
|
||||
+ return "";
|
|
||||
+ else if (!S_ISREG(statbuf.st_mode))
|
|
||||
+ return "X";
|
|
||||
+ else
|
|
||||
+ return md5_file(realfilename);
|
|
||||
} |
|
||||
|
|
||||
-/* Returns 1 if file is duplicate, 2 if file is modified. */
|
|
||||
+/* Returns if file is unmodified, modified, duplicate, or shared. */
|
|
||||
int md5sum_check(char * root, char * filename) |
|
||||
{ |
|
||||
char *md5_f, *md5_d; |
|
||||
|
|
||||
md5_f = md5sum_create(root, filename); |
|
||||
md5_d = memdb_get(&md5_memdb, filename); |
|
||||
-
|
|
||||
- if (md5_f == NULL || strcmp(md5_f, "") == 0)
|
|
||||
- return 0;
|
|
||||
+
|
|
||||
+/* printf ("md5sum_check(): md5_f: %s, md5_d: %s\n",
|
|
||||
+ (md5_f) ? md5_f : "NULL", (md5_d) ? md5_d : "NULL");
|
|
||||
+*/
|
|
||||
+ if (strcmp(md5_f, "") == 0)
|
|
||||
+ return MD5SUM_CHECK_OK;
|
|
||||
else if (md5_d == NULL) |
|
||||
- return 1;
|
|
||||
- else if (strcmp(md5_f, md5_d) == 0)
|
|
||||
- return 0;
|
|
||||
+ return MD5SUM_CHECK_DUPLICATE;
|
|
||||
+ else if (strcmp(md5_f, md5_d) == 0 || strcmp(md5_d, "X") == 0)
|
|
||||
+ return MD5SUM_CHECK_OK;
|
|
||||
+ else if (strcmp(md5_d, "Duplicate entry") == 0)
|
|
||||
+ return MD5SUM_CHECK_SHARED;
|
|
||||
else |
|
||||
- return 2;
|
|
||||
+ return MD5SUM_CHECK_MODIFIED;
|
|
||||
} |
|
||||
|
|
||||
void md5sum_initdb(char * root, int verbose) |
|
||||
{ |
|
||||
struct dirent *md5_dent; |
|
||||
- char buffer[1024], buffer2[1024];
|
|
||||
+ char buffer[1024];
|
|
||||
char *md5sum, *filename; |
|
||||
- const char const *admdirs[6] =
|
|
||||
- {"cksums", "dependencies", "descs", "flists", "md5sums", "packages"};
|
|
||||
FILE *f; |
|
||||
DIR *d; |
|
||||
|
|
||||
@@ -81,16 +86,6 @@
|
|
||||
root, md5_dent->d_name); |
|
||||
f = fopen(buffer, "r"); |
|
||||
if ( f != NULL ) { |
|
||||
- /* Add the /var/adm files of each package to the
|
|
||||
- md5sum memdb so md5sum_check() recognizes them. */
|
|
||||
- int n;
|
|
||||
- for (n = 0; n < 6; n++) {
|
|
||||
- snprintf(buffer2, 1024, "var/adm/%s/%s",
|
|
||||
- admdirs[n], md5_dent->d_name);
|
|
||||
- memdb_put(&md5_memdb, buffer2,
|
|
||||
- md5sum_create(root, buffer2));
|
|
||||
- }
|
|
||||
-
|
|
||||
while (fgets(buffer, 1024, f) != NULL) { |
|
||||
md5sum = strtok(buffer, " \t\n"); |
|
||||
filename = strtok(NULL, "\n"); |
|
||||
diff -dur mine-0.24/md5sum.h mine-0.24-patch/md5sum.h
|
|
||||
--- mine-0.24/md5sum.h 2005-03-23 09:51:06.000000000 +0100
|
|
||||
+++ mine-0.24-patch/md5sum.h 2006-04-27 20:14:38.000000000 +0200
|
|
||||
@@ -20,6 +20,11 @@
|
|
||||
#ifndef MD5SUM_H |
|
||||
#define MD5SUM_H |
|
||||
|
|
||||
+#define MD5SUM_CHECK_OK 0
|
|
||||
+#define MD5SUM_CHECK_DUPLICATE 1
|
|
||||
+#define MD5SUM_CHECK_MODIFIED 2
|
|
||||
+#define MD5SUM_CHECK_SHARED 3
|
|
||||
+
|
|
||||
char * md5sum_create(char * root, char * filename); |
|
||||
int md5sum_check(char * root, char * filename); |
|
||||
void md5sum_initdb(char * root, int verbose); |
|
||||
diff -dur mine-0.24/remove.c mine-0.24-patch/remove.c
|
|
||||
--- mine-0.24/remove.c 2005-08-09 12:57:29.000000000 +0200
|
|
||||
+++ mine-0.24-patch/remove.c 2006-04-27 20:14:38.000000000 +0200
|
|
||||
@@ -120,11 +120,17 @@
|
|
||||
flist = (flist_tmp=flist)->next; |
|
||||
free(flist_tmp); |
|
||||
|
|
||||
- if ( ! mode_force && md5sum_check(root, filename) ) {
|
|
||||
+ int result = 0;
|
|
||||
+ if ( ! mode_force && (result = md5sum_check(root, filename)) ) {
|
|
||||
if ( ! mode_test || ! mode_verbose ) |
|
||||
printf("%s: ", package); |
|
||||
- printf("WARNING: Skip modified/duplicate "
|
|
||||
- "file: %s\n", filename);
|
|
||||
+ printf("WARNING: Skip ");
|
|
||||
+ switch (result) {
|
|
||||
+ case MD5SUM_CHECK_DUPLICATE: printf("duplicate "); break;
|
|
||||
+ case MD5SUM_CHECK_MODIFIED: printf("modified "); break;
|
|
||||
+ case MD5SUM_CHECK_SHARED: printf("shared "); break;
|
|
||||
+ }
|
|
||||
+ printf("file %s:\n", filename);
|
|
||||
} |
|
||||
else |
|
||||
if ( mode_test ) { |
|