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(conffile_t *conffile)
+int conffile_has_been_modified(conffile_t * conffile)
{
- char *md5sum;
- 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);
-
- md5sum = file_md5sum_alloc(root_filename);
-
- if (md5sum && (ret = strcmp(md5sum, conffile->value))) {
- opkg_msg(INFO, "Conffile %s:\n\told md5=%s\n\tnew md5=%s\n",
- 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);
+
+ 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;
}