- char *md5sum;
- char *filename = conffile->name;
- char *root_filename;
- int ret = 1;
-
- 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);
-
- if (md5sum && (ret = strcmp(md5sum, conffile->value))) {
- 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);
- if (md5sum)
- 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);
+
+#ifdef HAVE_MD5
+ if (conffile->value && strlen(conffile->value) > 33) {
+ chksum = file_sha256sum_alloc(root_filename);
+ } else {
+ chksum = file_md5sum_alloc(root_filename);
+ }
+#else
+ chksum = file_sha256sum_alloc(root_filename);
+#endif
+ 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;