mirror of the now-defunct rocklinux.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

185 lines
5.8 KiB

  1. diff -dur mine-0.24/check.c mine-0.24-patch/check.c
  2. --- mine-0.24/check.c 2005-09-30 12:34:36.000000000 +0200
  3. +++ mine-0.24-patch/check.c 2006-04-27 20:14:38.000000000 +0200
  4. @@ -72,9 +72,14 @@
  5. strtok(buffer, " \t\n");
  6. filename = strtok(NULL, "\n");
  7. - if ( md5sum_check(root, filename) ) {
  8. - printf("Modified/duplicate "
  9. - "file: %s\n", filename);
  10. + int result = 0;
  11. + if ( result = md5sum_check(root, filename) ) {
  12. + switch (result) {
  13. + case MD5SUM_CHECK_DUPLICATE: printf("Duplicate "); break;
  14. + case MD5SUM_CHECK_MODIFIED: printf("Modified "); break;
  15. + case MD5SUM_CHECK_SHARED: printf("Shared "); break;
  16. + }
  17. + printf("file: %s\n", filename);
  18. modified++;
  19. }
  20. }
  21. diff -dur mine-0.24/install.c mine-0.24-patch/install.c
  22. --- mine-0.24/install.c 2006-04-27 21:06:40.000000000 +0200
  23. +++ mine-0.24-patch/install.c 2006-04-27 20:15:52.000000000 +0200
  24. @@ -256,6 +256,7 @@
  25. unlink(buffer3);
  26. }
  27. + int result = 0;
  28. if (patterns && glob_check(patterns, filename)) {
  29. if ( mode_verbose ) {
  30. printf("Exclude glob "
  31. @@ -265,15 +266,22 @@
  32. if (TH_ISREG(t) && tar_skip_regfile(t) != 0)
  33. goto error_errno;
  34. }
  35. - else if ( ! mode_force && md5sum_check(root, filename) ) {
  36. + else if ( ! mode_force && (result = md5sum_check(root, filename)) ) {
  37. + if ( ! mode_test || ! mode_verbose )
  38. + printf("%s: ", pname);
  39. + printf("WARNING: Skip ");
  40. + switch (result) {
  41. + case MD5SUM_CHECK_DUPLICATE: printf("duplicate "); break;
  42. + case MD5SUM_CHECK_MODIFIED: printf("modified "); break;
  43. + case MD5SUM_CHECK_SHARED: printf("shared "); break;
  44. + }
  45. + printf("file %s", filename);
  46. if ( mode_test && mode_verbose ) {
  47. - printf("WARNING: Skip modified/duplicate "
  48. - "file %s:\n", filename);
  49. + printf(":\n");
  50. th_print_long_ls(t);
  51. - } else {
  52. - printf("%s: WARNING: Skip modified/duplicate "
  53. - "file: %s\n", pname, filename);
  54. - }
  55. + } else
  56. + printf(".\n");
  57. +
  58. if ( mode_test ) {
  59. if (TH_ISREG(t) && tar_skip_regfile(t) != 0)
  60. goto error_errno;
  61. diff -dur mine-0.24/md5sum.c mine-0.24-patch/md5sum.c
  62. --- mine-0.24/md5sum.c 2005-08-09 12:57:29.000000000 +0200
  63. +++ mine-0.24-patch/md5sum.c 2006-04-27 21:11:22.000000000 +0200
  64. @@ -20,6 +20,7 @@
  65. #include <stdio.h>
  66. #include <dirent.h>
  67. #include <string.h>
  68. +#include <sys/types.h>
  69. #include <sys/stat.h>
  70. #include <unistd.h>
  71. @@ -37,35 +38,42 @@
  72. struct stat statbuf;
  73. snprintf(realfilename, 1024, "%s/%s", root, filename);
  74. - return (stat(realfilename, &statbuf) != 0 || S_ISFIFO(statbuf.st_mode))
  75. - ? "" : md5_file(realfilename);
  76. + if (lstat(realfilename, &statbuf) != 0 || S_ISDIR(statbuf.st_mode))
  77. + return "";
  78. + else if (!S_ISREG(statbuf.st_mode))
  79. + return "X";
  80. + else
  81. + return md5_file(realfilename);
  82. }
  83. -/* Returns 1 if file is duplicate, 2 if file is modified. */
  84. +/* Returns if file is unmodified, modified, duplicate, or shared. */
  85. int md5sum_check(char * root, char * filename)
  86. {
  87. char *md5_f, *md5_d;
  88. md5_f = md5sum_create(root, filename);
  89. md5_d = memdb_get(&md5_memdb, filename);
  90. -
  91. - if (md5_f == NULL || strcmp(md5_f, "") == 0)
  92. - return 0;
  93. +
  94. +/* printf ("md5sum_check(): md5_f: %s, md5_d: %s\n",
  95. + (md5_f) ? md5_f : "NULL", (md5_d) ? md5_d : "NULL");
  96. +*/
  97. + if (strcmp(md5_f, "") == 0)
  98. + return MD5SUM_CHECK_OK;
  99. else if (md5_d == NULL)
  100. - return 1;
  101. - else if (strcmp(md5_f, md5_d) == 0)
  102. - return 0;
  103. + return MD5SUM_CHECK_DUPLICATE;
  104. + else if (strcmp(md5_f, md5_d) == 0 || strcmp(md5_d, "X") == 0)
  105. + return MD5SUM_CHECK_OK;
  106. + else if (strcmp(md5_d, "Duplicate entry") == 0)
  107. + return MD5SUM_CHECK_SHARED;
  108. else
  109. - return 2;
  110. + return MD5SUM_CHECK_MODIFIED;
  111. }
  112. void md5sum_initdb(char * root, int verbose)
  113. {
  114. struct dirent *md5_dent;
  115. - char buffer[1024], buffer2[1024];
  116. + char buffer[1024];
  117. char *md5sum, *filename;
  118. - const char const *admdirs[6] =
  119. - {"cksums", "dependencies", "descs", "flists", "md5sums", "packages"};
  120. FILE *f;
  121. DIR *d;
  122. @@ -81,16 +86,6 @@
  123. root, md5_dent->d_name);
  124. f = fopen(buffer, "r");
  125. if ( f != NULL ) {
  126. - /* Add the /var/adm files of each package to the
  127. - md5sum memdb so md5sum_check() recognizes them. */
  128. - int n;
  129. - for (n = 0; n < 6; n++) {
  130. - snprintf(buffer2, 1024, "var/adm/%s/%s",
  131. - admdirs[n], md5_dent->d_name);
  132. - memdb_put(&md5_memdb, buffer2,
  133. - md5sum_create(root, buffer2));
  134. - }
  135. -
  136. while (fgets(buffer, 1024, f) != NULL) {
  137. md5sum = strtok(buffer, " \t\n");
  138. filename = strtok(NULL, "\n");
  139. diff -dur mine-0.24/md5sum.h mine-0.24-patch/md5sum.h
  140. --- mine-0.24/md5sum.h 2005-03-23 09:51:06.000000000 +0100
  141. +++ mine-0.24-patch/md5sum.h 2006-04-27 20:14:38.000000000 +0200
  142. @@ -20,6 +20,11 @@
  143. #ifndef MD5SUM_H
  144. #define MD5SUM_H
  145. +#define MD5SUM_CHECK_OK 0
  146. +#define MD5SUM_CHECK_DUPLICATE 1
  147. +#define MD5SUM_CHECK_MODIFIED 2
  148. +#define MD5SUM_CHECK_SHARED 3
  149. +
  150. char * md5sum_create(char * root, char * filename);
  151. int md5sum_check(char * root, char * filename);
  152. void md5sum_initdb(char * root, int verbose);
  153. diff -dur mine-0.24/remove.c mine-0.24-patch/remove.c
  154. --- mine-0.24/remove.c 2005-08-09 12:57:29.000000000 +0200
  155. +++ mine-0.24-patch/remove.c 2006-04-27 20:14:38.000000000 +0200
  156. @@ -120,11 +120,17 @@
  157. flist = (flist_tmp=flist)->next;
  158. free(flist_tmp);
  159. - if ( ! mode_force && md5sum_check(root, filename) ) {
  160. + int result = 0;
  161. + if ( ! mode_force && (result = md5sum_check(root, filename)) ) {
  162. if ( ! mode_test || ! mode_verbose )
  163. printf("%s: ", package);
  164. - printf("WARNING: Skip modified/duplicate "
  165. - "file: %s\n", filename);
  166. + printf("WARNING: Skip ");
  167. + switch (result) {
  168. + case MD5SUM_CHECK_DUPLICATE: printf("duplicate "); break;
  169. + case MD5SUM_CHECK_MODIFIED: printf("modified "); break;
  170. + case MD5SUM_CHECK_SHARED: printf("shared "); break;
  171. + }
  172. + printf("file %s:\n", filename);
  173. }
  174. else
  175. if ( mode_test ) {