Ejemplo n.º 1
0
static int list_svcs_by_cat(void)
{
	category_id_t *cat_ids;
	size_t cat_cnt;

	size_t i;
	char *cat_name;
	int rc;

	rc = loc_get_categories(&cat_ids, &cat_cnt);
	if (rc != EOK) {
		printf(NAME ": Error getting list of categories.\n");
		return rc;
	}

	for (i = 0; i < cat_cnt; i++) {
		rc = loc_category_get_name(cat_ids[i], &cat_name);
		if (rc != EOK)
			cat_name = str_dup("<unknown>");

		if (cat_name == NULL) {
			printf(NAME ": Error allocating memory.\n");
			free(cat_ids);
			return rc;
		}

		rc = show_cat(cat_name, cat_ids[i]);
		(void) rc;

		free(cat_name);
	}

	free(cat_ids);
	return EOK;
}
Ejemplo n.º 2
0
// select_cat() returns 0 if lista is empty. Returns -1 if input's value is invalid.
int select_cat(vocab_t *listavocab, int cat, const char texto[]) {
	
	pantalla_t *pant = get_curses();

	int numcat = 0;
	
	char *str = NULL;
	str = (char *)malloc(sizeof(char)*TAM_BUF);
	if (!str) {
		exit_mem(EXIT_FAILURE, "Not enough memory.");
	}

	snprintf(str, TAM_BUF, "Choose a list %s.\n\n", texto);
	// If previously we don't select any category...
	if (cat <= 0) {
		numcat = show_cat(listavocab);

		if (numcat>0) {
			print_buffer(str, false);
			cat = 0;
			upgrade_buffer(false);
			while ((cat != 13) && (cat != 27)) {
				wrefresh(pant->ppal);
				 cat = wgetch(pant->menu);
				scroll_keys(cat, true);				
			}
			
			cat = select_item(cat);
			
			if (cat <=0 || cat > numcat) {
				print_buffer("Category not valid.", true);
				cat = -1;
			}
		} else
			cat = 0;
	}
	upgrade_buffer(false);
	wrefresh(pant->ppal);

	free(str);
					
	return cat;
	
}
Ejemplo n.º 3
0
int main(int argc, char *argv[])
{
	int rc;
	char *cmd;
	char *cat_name;
	category_id_t cat_id;

	if (argc <= 1) {
		rc = list_svcs_by_cat();
		if (rc != EOK)
			return 1;
		return 0;
	}

	cmd = argv[1];
	if (str_cmp(cmd, "show-cat") == 0) {
		if (argc < 3) {
			printf("Argument missing.\n");
			print_syntax();
			return 1;
		}

		cat_name = argv[2];
		rc = loc_category_get_id(cat_name, &cat_id, 0);
		if (rc != EOK) {
			printf("Error looking up category '%s'.\n", cat_name);
			return 1;
		}

		rc = show_cat(cat_name, cat_id);
		if (rc != EOK)
			return 1;
	} else {
		printf("Invalid command '%s'\n", cmd);
		print_syntax();
		return 1;
	}

	return 0;
}