enum lsatt_flags {
/** Whether "-a" was given for the lsatt command. */
- LSATT_FLAG_ALPHA = 1,
+ LSATT_FLAG_SORT_BY_ID = 1,
/** Whether "-l" was given for the lsatt command. */
LSATT_FLAG_LONG = 2,
LSATT_FLAG_REVERSE = 4
ret = osl_get_object(table, row, ATTCOL_BITNUM, &bitnum_obj);
if (ret < 0) {
para_printf(&laad->pb, "%s: %s\n", name, PARA_STRERROR(-ret));
- return 1;
+ return ret;
}
para_printf(&laad->pb, "%u\t%s\n", *(unsigned char*)bitnum_obj.data,
name);
struct osl_object *result)
{
struct lsatt_action_data laad = {.flags = *(unsigned *) query->data};
- int ret;
struct pattern_match_data pmd = {
.table = attribute_table,
.loop_col_num = ATTCOL_BITNUM,
.data = &laad,
.action = print_attribute
};
+ int ret;
- if (laad.flags & LSATT_FLAG_ALPHA)
+ if (laad.flags & LSATT_FLAG_SORT_BY_ID)
pmd.loop_col_num = ATTCOL_NAME;
if (laad.flags & LSATT_FLAG_REVERSE)
pmd.pm_flags |= PM_REVERSE_LOOP;
if (ret < 0)
para_printf(&laad.pb, "%s\n", PARA_STRERROR(-ret));
if (!laad.pb.buf)
- para_printf(&laad.pb, "no match\n");
+ return 0;
result->data = laad.pb.buf;
result->size = laad.pb.size;
return 1;
i++;
break;
}
- if (!strcmp(arg, "-a")) {
- flags |= LSATT_FLAG_ALPHA;
+ if (!strcmp(arg, "-i")) {
+ flags |= LSATT_FLAG_SORT_BY_ID;
continue;
}
if (!strcmp(arg, "-l")) {
};
/** Structure passed to the \p print_blob function. */
-struct lsblob_data {
+struct lsblob_action_data {
uint32_t flags;
struct para_buffer pb;
};
-static int print_blob(struct osl_table *table, struct osl_row *row, const char *name, void *data)
+static int print_blob(struct osl_table *table, struct osl_row *row,
+ const char *name, void *data)
{
+ struct lsblob_action_data *lbad = data;
struct osl_object obj;
uint32_t id;
int ret;
- struct lsblob_data *lbd = data;
- if (!(lbd->flags & BLOB_LS_FLAG_LONG)) {
- para_printf(&lbd->pb, "%s\n", name);
+ if (!(lbad->flags & BLOB_LS_FLAG_LONG)) {
+ para_printf(&lbad->pb, "%s\n", name);
return 1;
}
ret = osl_get_object(table, row, BLOBCOL_ID, &obj);
- if (ret < 0)
+ if (ret < 0) {
+ para_printf(&lbad->pb, "%s: %s\n", name, PARA_STRERROR(-ret));
return ret;
+ }
id = *(uint32_t *)obj.data;
- para_printf(&lbd->pb, "%u\t%s\n", id, name);
+ para_printf(&lbad->pb, "%u\t%s\n", id, name);
return 1;
}
-int com_lsblob_callback(struct osl_table *table,
- const struct osl_object *query, struct osl_object *ls_output)
+static int com_lsblob_callback(struct osl_table *table,
+ const struct osl_object *query, struct osl_object *result)
{
- struct lsblob_data lbd = {.flags = *(uint32_t *)query};
+ struct lsblob_action_data lbad = {.flags = *(uint32_t *)query};
struct pattern_match_data pmd = {
.table = table,
.patterns = {.data = (char *)query->data + sizeof(uint32_t),
.size = query->size - sizeof(uint32_t)},
.pm_flags = PM_NO_PATTERN_MATCHES_EVERYTHING | PM_SKIP_EMPTY_NAME,
.match_col_num = BLOBCOL_NAME,
- .data = &lbd,
+ .data = &lbad,
.action = print_blob,
};
int ret;
- if (lbd.flags & BLOB_LS_FLAG_REVERSE)
+ if (lbad.flags & BLOB_LS_FLAG_REVERSE)
pmd.pm_flags |= PM_REVERSE_LOOP;
- if (!(lbd.flags & BLOB_LS_FLAG_SORT_BY_ID))
+ if (!(lbad.flags & BLOB_LS_FLAG_SORT_BY_ID))
pmd.loop_col_num = BLOBCOL_ID;
else
pmd.loop_col_num = BLOBCOL_NAME;
ret = for_each_matching_row(&pmd);
- if (lbd.pb.buf) {
- ls_output->data = lbd.pb.buf;
- ls_output->size = lbd.pb.size;
- return 1;
- }
- if (ret > 0)
- ret = 0;
- return ret;
+ if (ret < 0)
+ para_printf(&lbad.pb, "%s\n", PARA_STRERROR(-ret));
+ if (!lbad.pb.buf)
+ return 0;
+ result->data = lbad.pb.buf;
+ result->size = lbad.pb.size;
+ return 1;
}
static int com_lsblob(callback_function *f, int fd, int argc, char * const * const argv)