示例#1
0
文件: main.c 项目: rborisov/pircar
enum mpd_tag_type get_search_type(const char *name)
{
    if (strcasecmp(name, "any") == 0)
        return SEARCH_TAG_ANY;

    if (strcasecmp(name, "filename") == 0)
        return SEARCH_TAG_URI;

#if LIBMPDCLIENT_CHECK_VERSION(2,9,0)
    if (strcasecmp(name, "base") == 0)
        return SEARCH_TAG_BASE;
#endif

    enum mpd_tag_type type = mpd_tag_name_iparse(name);
    if (type != MPD_TAG_UNKNOWN)
        return type;

    fprintf(stderr, "\"%s\" is not a valid search type: <any", name);

    for (unsigned i = 0; i < MPD_TAG_COUNT; i++) {
        name = mpd_tag_name(i);
        if (name == NULL)
            continue;

        fputc('|', stderr);
        fputs(name, stderr);
    }

    fputs(">\n", stderr);

    return MPD_TAG_UNKNOWN;
}
示例#2
0
文件: search.c 项目: Fyzick/capstone
struct mpd_pair *
mpd_recv_pair_tag(struct mpd_connection *connection, enum mpd_tag_type type)
{
	const char *name;

	assert(connection != NULL);

	name = mpd_tag_name(type);
	if (name == NULL)
		return NULL;

	return mpd_recv_pair_named(connection, name);
}
示例#3
0
void
print_extra_info(void)
{
  WINDOW *win = specific_win(EXTRA_INFO);
  
  if (basic_info->volume >= 0)
	wprintw(win, "Volume:%3i%c ", basic_info->volume, '%');
  else {
	wprintw(win, "Volume: n/a   ");
  }

  mvwprintw(win, 0, 14, "Search: ");
  color_print(win, 6,
			  mpd_tag_name(songlist->tags
						   [songlist->crt_tag_id]));
  wprintw(win, "  ");
}
示例#4
0
文件: search.c 项目: Fyzick/capstone
bool
mpd_search_add_tag_constraint(struct mpd_connection *connection,
			      enum mpd_operator oper,
			      enum mpd_tag_type type, const char *value)
{
	const char *strtype;

	assert(connection != NULL);
	assert(value != NULL);

	strtype = mpd_tag_name(type);
	if (strtype == NULL) {
		mpd_error_code(&connection->error, MPD_ERROR_ARGUMENT);
		mpd_error_message(&connection->error,
				  "invalid type specified");
		return false;
	}

	return mpd_search_add_constraint(connection, oper, strtype, value);
}
示例#5
0
文件: search.c 项目: Fyzick/capstone
bool
mpd_search_db_tags(struct mpd_connection *connection, enum mpd_tag_type type)
{
	const char *strtype;
	int len;

	assert(connection != NULL);

	if (mpd_error_is_defined(&connection->error))
		return false;

	if (connection->request) {
		mpd_error_code(&connection->error, MPD_ERROR_STATE);
		mpd_error_message(&connection->error,
				  "search already in progress");
		return false;
	}

	strtype = mpd_tag_name(type);
	if (strtype == NULL) {
		mpd_error_code(&connection->error, MPD_ERROR_ARGUMENT);
		mpd_error_message(&connection->error,
				  "invalid type specified");
		return false;
	}

	len = 5+strlen(strtype)+1;
	connection->request = malloc(len);
	if (connection->request == NULL) {
		mpd_error_code(&connection->error, MPD_ERROR_OOM);
		return false;
	}

	snprintf(connection->request, len, "list %s", strtype);

	return true;
}