libopkg: fix pkg_set_ptr() to properly set NULL pointers
[oweals/opkg-lede.git] / libopkg / pkg.h
index df5d7a76086c6709d8dcd63293f3dd30e8123701..d9cab552826b3d3f2328f91cffab0d3bca676f6e 100644 (file)
@@ -60,6 +60,7 @@ enum pkg_state_flag {
        SF_MARKED = 64,         /* temporary mark */
        SF_FILELIST_CHANGED = 128,      /* needs filelist written */
        SF_USER = 256,
+       SF_NEED_DETAIL = 512,
        SF_LAST_STATE_FLAG
 };
 typedef enum pkg_state_flag pkg_state_flag_t;
@@ -144,7 +145,7 @@ struct pkg {
        pkg_src_t *src;
        pkg_dest_t *dest;
        pkg_state_want_t state_want:3;
-       pkg_state_flag_t state_flag:10;
+       pkg_state_flag_t state_flag:11;
        pkg_state_status_t state_status:4;
 
        abstract_pkg_t *parent;
@@ -197,7 +198,8 @@ static inline char *pkg_get_string(const pkg_t *pkg, int id)
 
 static inline void * pkg_set_ptr(pkg_t *pkg, int id, void *ptr)
 {
-       return ptr ? *(void **) pkg_set_raw(pkg, id, &ptr, sizeof(ptr)) : NULL;
+       void **res = pkg_set_raw(pkg, id, &ptr, sizeof(ptr));
+       return res ? *res : NULL;
 }
 
 static inline void * pkg_get_ptr(const pkg_t *pkg, int id)
@@ -210,6 +212,11 @@ char *pkg_set_architecture(pkg_t *pkg, const char *architecture, ssize_t len);
 char *pkg_get_architecture(const pkg_t *pkg);
 int pkg_get_arch_priority(const pkg_t *pkg);
 
+char *pkg_get_md5(const pkg_t *pkg);
+char *pkg_set_md5(pkg_t *pkg, const char *cksum);
+
+char *pkg_get_sha256(const pkg_t *pkg);
+char *pkg_set_sha256(pkg_t *pkg, const char *cksum);
 
 abstract_pkg_t *abstract_pkg_new(void);