X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=blob.c;h=5ac35895bc57a34a11201afdd9bb99e998ef595f;hb=b2e6a24448a9e49e0766ab4f32163580eeff469e;hp=1742ac427c85e6e7cc35becc9cfbe508e45bf750;hpb=002731cd3938f3be6b71651e56c062af1adcdec0;p=paraslash.git diff --git a/blob.c b/blob.c index 1742ac42..5ac35895 100644 --- a/blob.c +++ b/blob.c @@ -14,6 +14,29 @@ #include "afs.h" #include "net.h" #include "ipc.h" +#include "portable_io.h" + +/** + * Compare two osl objects pointing to unsigned integers of 32 bit size. + * + * \param obj1 Pointer to the first integer. + * \param obj2 Pointer to the second integer. + * + * \return The values required for an osl compare function. + * + * \sa osl_compare_func, osl_hash_compare(). + */ +static int uint32_compare(const struct osl_object *obj1, const struct osl_object *obj2) +{ + uint32_t d1 = read_u32((const char *)obj1->data); + uint32_t d2 = read_u32((const char *)obj2->data); + + if (d1 < d2) + return 1; + if (d1 > d2) + return -1; + return 0; +} static struct osl_column_description blob_cols[] = { [BLOBCOL_ID] = { @@ -67,13 +90,13 @@ static int print_blob(struct osl_table *table, struct osl_row *row, struct lsblob_action_data *lbad = data; struct osl_object obj; uint32_t id; - int ret, ret2; + int ret; if (!(lbad->flags & BLOB_LS_FLAG_LONG)) return para_printf(&lbad->pb, "%s\n", name); ret = osl_get_object(table, row, BLOBCOL_ID, &obj); if (ret < 0) { - ret2 = para_printf(&lbad->pb, "%s: %s\n", name, para_strerror(-ret)); + para_printf(&lbad->pb, "%s: %s\n", name, para_strerror(-ret)); return ret; } id = *(uint32_t *)obj.data; @@ -110,7 +133,7 @@ static void com_lsblob_callback(struct osl_table *table, pmd.loop_col_num = BLOBCOL_ID; ret = for_each_matching_row(&pmd); if (ret < 0) - ret = para_printf(&lbad.pb, "%s\n", para_strerror(-ret)); + para_printf(&lbad.pb, "%s\n", para_strerror(-ret)); if (lbad.pb.offset) pass_buffer_as_shm(lbad.pb.buf, lbad.pb.offset, &fd); free(lbad.pb.buf); @@ -200,9 +223,9 @@ static int remove_blob(struct osl_table *table, struct osl_row *row, const char *name, void *data) { struct rmblob_data *rmbd = data; - int ret = osl_del_row(table, row), ret2; + int ret = osl_del_row(table, row); if (ret < 0) { - ret2 = para_printf(&rmbd->pb, "%s: %s\n", name, para_strerror(-ret)); + para_printf(&rmbd->pb, "%s: %s\n", name, para_strerror(-ret)); return ret; } rmbd->num_removed++; @@ -287,7 +310,7 @@ static void com_addblob_callback(struct osl_table *table, __a_unused int fd, struct osl_row *row; struct osl_object obj = {.data = name, .size = name_len}; ret = osl_get_row(table, BLOBCOL_NAME, &obj, &row); - if (ret < 0 && ret != -E_RB_KEY_NOT_FOUND) + if (ret < 0 && ret != -E_OSL_RB_KEY_NOT_FOUND) goto out; if (ret >= 0) { /* we already have a blob with this name */ obj.data = name + name_len;