summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
5abf556)
Previously, an attempt to add a blob with a name of an already
existing blob failed (siltenly). Just replace the existing blob
with the new contents instead.
ret = osl_add_row(table, objs);
if (ret < 0)
return ret;
ret = osl_add_row(table, objs);
if (ret < 0)
return ret;
- } else { /* get id of the dummy row and increment it */
+ } else {
+ /* check if name already exists */
- struct osl_object obj = {.data = "", .size = 1};
+ 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)
+ return ret;
+ if (ret >= 0) { /* we already have a blob with this name */
+ obj.data = name + name_len;
+ obj.size = query->size - name_len;
+ return osl_update_object(table, row, BLOBCOL_DEF, &obj);
+ }
+ /* new blob, get id of the dummy row and increment it */
+ obj.data = "";
+ obj.size = 1;
ret = osl_get_row(table, BLOBCOL_NAME, &obj, &row);
if (ret < 0)
return ret;
ret = osl_get_row(table, BLOBCOL_NAME, &obj, &row);
if (ret < 0)
return ret;