file_util: consolidate hex/unhex routines
[oweals/opkg-lede.git] / libopkg / conffile.c
index 519ba45fc037ab97a4acdfc79ab3d269357f7765..d541509e8459c069e86259c4da46be617d430ea7 100644 (file)
@@ -1,4 +1,4 @@
-/* conffile.c - the itsy package management system
+/* conffile.c - the opkg package management system
 
    Carl D. Worth
 
    General Public License for more details.
 */
 
-#include <string.h>
+#include <stdio.h>
 #include <stdlib.h>
 
-#include "includes.h"
 #include "opkg_message.h"
-
 #include "conffile.h"
 #include "file_util.h"
 #include "sprintf_alloc.h"
+#include "opkg_conf.h"
 
-int conffile_init(conffile_t *conffile, const char *file_name, const char *md5sum)
+int conffile_init(conffile_t * conffile, const char *file_name,
+                 const char *md5sum)
 {
-    return nv_pair_init(conffile, file_name, md5sum);
+       return nv_pair_init(conffile, file_name, md5sum);
 }
 
-void conffile_deinit(conffile_t *conffile)
+void conffile_deinit(conffile_t * conffile)
 {
-    nv_pair_deinit(conffile);
+       nv_pair_deinit(conffile);
 }
 
-int conffile_has_been_modified(opkg_conf_t *conf, conffile_t *conffile)
+int conffile_has_been_modified(conffile_t * conffile)
 {
-    char *md5sum;
-    char *filename = conffile->name;
-    char *root_filename;
-    int ret;
-
-    if (conffile->value == NULL) {
-        opkg_message(conf, OPKG_NOTICE, "%s: conffile %s has no md5sum\n", __FUNCTION__, conffile->name);
-        return 1;
-    }
-
-    root_filename = root_filename_alloc(conf, filename);
-
-    md5sum = file_md5sum_alloc(root_filename);
-
-    ret = strcmp(md5sum, conffile->value);
-    if (ret) {
-      opkg_message(conf, OPKG_NOTICE, "%s: conffile %s: \t\nold md5=%s \t\nnew md5=%s\n", __FUNCTION__,
-              conffile->name, md5sum, conffile->value);
-    }
-
-    free(root_filename);
-    free(md5sum);
-
-    return ret;
+       char *chksum;
+       char *filename = conffile->name;
+       char *root_filename;
+       int ret = 1;
+
+       if (conffile->value == NULL) {
+               opkg_msg(NOTICE, "Conffile %s has no md5sum.\n",
+                        conffile->name);
+               return 1;
+       }
+
+       root_filename = root_filename_alloc(filename);
+
+       if (conffile->value && strlen(conffile->value) > 33) {
+               chksum = file_sha256sum_alloc(root_filename);
+       } else {
+               chksum = file_md5sum_alloc(root_filename);
+       }
+
+       if (chksum && (ret = strcmp(chksum, conffile->value))) {
+               opkg_msg(INFO, "Conffile %s:\n\told chk=%s\n\tnew chk=%s\n",
+                        conffile->name, chksum, conffile->value);
+       }
+
+       free(root_filename);
+       if (chksum)
+               free(chksum);
+
+       return ret;
 }