static void *mysql_ptr = NULL;
-
static int com_cam(int, int, char **);
static int com_cdb(int, int, char **);
static int com_cs(int, int, char **);
}
};
-static int real_query(char *query)
+static int real_query(const char *query)
{
if (!mysql_ptr)
return -E_NOTCONN;
* Use open connection given by mysql_ptr to query server. Returns a
* result pointer on succes and NULL on errors
*/
-static struct MYSQL_RES *get_result(char *query)
+static struct MYSQL_RES *get_result(const char *query)
{
void *result;
char *q;
int ret;
- if (argc < 1)
+ if (argc < 2)
return -E_MYSQL_SYNTAX;
q = make_message("alter table data add %s char(1) "
"not null default 0", argv[1]);
char *q;
int ret;
- if (argc < 1)
+ if (argc < 2)
return -E_MYSQL_SYNTAX;
q = make_message("alter table data drop %s", argv[1]);
ret = real_query(q);
int ret, stradd = strcmp(argv[0], "picadd");
size_t size;
- if (argc < 1)
+ if (argc < 2)
return -E_MYSQL_SYNTAX;
if (strlen(argv[1]) >= MAXLINE - 1)
return -E_NAMETOOLONG;
int ret;
unsigned int num_rows, num_fields;
- if (argc < 1)
+ if (argc < 2)
return -E_MYSQL_SYNTAX;
- result = get_result(argv[1]);
+ result = get_result(argv[1]);
if (!result)
/* return success, because it's ok to have no results */
return 1;
mysql_free_result(result);
return NULL;
}
- mysql_data_seek(result, 4); /* skip Lastplayed, Numplayed... */
+ mysql_data_seek(result, 4); /* skip Lastplayed, Numplayed... */
return result;
}
void *result;
int ret;
- if (argc)
+ if (argc != 1)
return -E_MYSQL_SYNTAX;
result = get_all_attributes();
if (!result)
q = make_message("select name, to_days(now()) - to_days(lastplayed) from "
"data%s%s%s order by lastplayed",
- (argc < 1)? "" : " where ",
- (argc < 1)? "" : argv[1],
- (argc < 1)? "" : " = '1'");
- result = get_result(q);
+ (argc < 2)? "" : " where ",
+ (argc < 2)? "" : argv[1],
+ (argc < 2)? "" : " = '1'");
+ result = get_result(q);
free(q);
if (!result)
return -E_NORESULT;
char *q;
int num, ret;
- if (argc < 1)
+ if (argc < 2)
num = 10;
else
num = atoi(argv[1]);
"\n\n\n"
"') from data"
);
- if (argc >= 1) {
+ if (argc >= 2) {
char *tmp = make_message("%s where name LIKE '%s'", query,
argv[1]);
free(query);
}
mysql_free_result(result);
ret = -E_NORESULT;
- result = get_result(query);
+ result = get_result(query);
if (!result)
goto out;
ret = -E_EMPTY_RESULT;
num_fields = mysql_num_fields(result);
if (num_fields < 5)
goto out;
- mysql_data_seek(result2, 4); /* skip Lastplayed, Numplayed... */
+ mysql_data_seek(result2, 4); /* skip Lastplayed, Numplayed... */
row = mysql_fetch_row(result);
ret = -E_NOROW;
if (!row)
goto out;
if (atts && (verbose || is_set))
atts = para_strcat(atts, verbose? "," : " ");
- if (is_set || verbose)
+ if (is_set || verbose)
atts = para_strcat(atts, row2[0]);
if (verbose)
atts = para_strcat(atts, is_set? "=\"1\"" : "=\"0\"");
- }
+ }
ret = 1;
out:
if (result2)
goto out;
q = make_message(verbose? verbose_fmt : fmt, ebn);
free(ebn);
- result = get_result(q);
+ result = get_result(q);
free(q);
if (!result)
goto out;
free(tmp2);
continue;
}
- if (!strcmp(command, "score:"))
+ if (!score && !strcmp(command, "score:"))
score = s_a_r_list(macro_list, arg);
}
if (!score) {
goto write_query;
}
select_clause = para_strdup(with_path?
- "select concat(dir.dir, '/', dir.name) from data, dir "
- "where dir.name = data.name "
- :
- "select name from data where name is not NULL");
+ "select concat(dir.dir, '/', dir.name) from data, dir "
+ "where dir.name = data.name "
+ :
+ "select name from data where name is not NULL");
order = make_message("order by -(%s)", score);
free(score);
if (accept_opts && deny_opts) {
* This is called from server and from some commands. Name must not be NULL
* Never returns NULL.
*/
-static char *get_dbinfo(char *name)
+static char *get_selector_info(char *name)
{
char *meta = NULL, *atts = NULL, *info, *dir = NULL, *query, *stream = NULL;
void *result = NULL;
char *name = NULL, *meta = NULL, *atts = NULL, *dir = NULL;
int ret, com_la = strcmp(argv[0], "info");
- if (argc < 1) {
+ if (argc < 2) {
ret = -E_GET_AUDIO_FILE;
if (!(name = get_current_audio_file()))
goto out;
free(name);
return ret;
}
-static int change_stream(char *stream)
+static int change_stream(const char *stream)
{
char *query;
int ret;
{
int ne = !strcmp(argv[0], "ne");
int i, ret;
- if (argc < 1)
+ if (argc < 2)
return -E_MYSQL_SYNTAX;
- for (i = 1; i <= argc; i++) {
+ for (i = 1; i < argc; i++) {
ret = remove_entry(argv[i]);
if (ret < 0)
return ret;
char *q, *dn, *ebn1 = NULL, *ebn2 = NULL, *edn = NULL;
int ret;
- if (argc != 2)
+ if (argc != 3)
return -E_MYSQL_SYNTAX;
ebn1 = escaped_basename(argv[1]);
ebn2 = escaped_basename(argv[2]);
char *q, *ebn;
long unsigned id;
int i, ret;
- char *field = strcmp(argv[0], "picass")? "numplayed" : "pic_id";
+ const char *field = strcmp(argv[0], "picass")? "numplayed" : "pic_id";
- if (argc < 2)
+ if (argc < 3)
return -E_MYSQL_SYNTAX;
id = atol(argv[1]);
- for (i = 2; i <= argc; i++) {
+ for (i = 2; i < argc; i++) {
ebn = escaped_basename(argv[i]);
if (!ebn)
return -E_ESCAPE;
long unsigned id;
char *q;
- if (argc != 2)
+ if (argc != 3)
return -E_MYSQL_SYNTAX;
id = atol(argv[1]);
if (strlen(argv[2]) > MAXLINE)
unsigned long *length;
int ret;
- if (argc)
+ if (argc != 1)
return -E_MYSQL_SYNTAX;
result = get_result("select id,name,pic from pics order by id");
if (!result)
my_ulonglong aff;
int i, ret;
- if (argc < 1)
+ if (argc < 2)
return -E_MYSQL_SYNTAX;
- for (i = 1; i <= argc; i++) {
+ for (i = 1; i < argc; i++) {
id = atol(argv[i]);
q = make_message("delete from pics where id = %lu", id);
ret = real_query(q);
int ret;
char *q, *name = NULL;
- if (argc < 1) {
+ if (argc < 2) {
ret = -E_GET_AUDIO_FILE;
name = get_current_audio_file();
} else {
char *tmp;
int ret = -1;
- if (argc < 1)
+ if (argc < 2)
return -E_MYSQL_SYNTAX;
tmp = make_message("delete from streams where name='%s'", argv[1]);
ret = real_query(tmp);
int ret;
unsigned int num_rows;
- if (argc > 0)
+ if (argc > 1)
q = make_message("select name from data where name LIKE '%s'",
argv[1]);
else
q = para_strdup("select name from data");
- result = get_result(q);
+ result = get_result(q);
free(q);
if (!result)
return -E_NORESULT;
const char *fmt = "select count(name) from data where %s='1'";
int ret = -E_NORESULT;
- if (argc)
+ if (argc != 1)
return -E_MYSQL_SYNTAX;
result = get_all_attributes();
if (!result)
char *buf = make_message(fmt, name);
int ret = -E_NORESULT;
- result = get_result(buf);
+ result = get_result(buf);
free(buf);
if (!result)
goto out;
static void update_audio_file_server_handler(char *name)
{
char *info;
- info = get_dbinfo(name);
+ info = get_selector_info(name);
update_mmd(info);
free(info);
update_audio_file(name);
static int com_us(__unused int fd, int argc, char *argv[])
{
- if (argc != 1)
+ if (argc != 2)
return -E_MYSQL_SYNTAX;
return update_audio_file(argv[1]);
}
-static void refresh_mmd_dbinfo(void)
+static void refresh_selector_info(void)
{
char *name = get_current_audio_file();
char *info;
if (!name)
return;
- info = get_dbinfo(name);
+ info = get_selector_info(name);
free(name);
mmd_lock();
update_mmd(info);
int match = -1, ret, i;
unsigned int num_rows;
- if (argc)
+ if (argc != 1)
return -E_MYSQL_SYNTAX;
ret = -E_NORESULT;
if (!result)
else
i = match < num_rows - 1? match + 1 : 0;
ret = -E_NOROW;
- mysql_data_seek(result, i);
+ mysql_data_seek(result, i);
row = mysql_fetch_row(result);
if (!row || !row[0])
goto out;
"'current_stream'", row[0]);
ret = real_query(query);
free(query);
- refresh_mmd_dbinfo();
+ refresh_selector_info();
out:
free(stream);
if (result)
void *result;
MYSQL_ROW row;
- if (argc && strcmp(argv[1], "current_stream"))
+ if (argc > 1 && strcmp(argv[1], "current_stream"))
return -E_MYSQL_SYNTAX;
- if (argc) {
+ if (argc > 1) {
char *cs = get_current_stream();
ret = send_va_buffer(fd, "%s\n", cs);
free(cs);
void *result;
int ret;
- if (argc < 1) {
+ if (argc < 2) {
ret = -E_GET_STREAM;
name = get_current_stream();
} else {
char *old_stream = get_current_stream();
int csp = !strcmp(argv[0], "csp");
- if (!argc) {
+ if (argc == 1) {
ret = -E_MYSQL_SYNTAX;
if (csp)
goto out;
ret = change_stream(argv[1]);
if (ret < 0)
goto out;
- refresh_mmd_dbinfo();
+ refresh_selector_info();
}
if (csp) {
mmd_lock();
char *query, *stream, *tmp;
unsigned int num_rows, num;
- if (argc < 1)
+ if (argc < 2)
return -E_MYSQL_SYNTAX;
num = atoi(argv[1]);
if (!num)
return -E_MYSQL_SYNTAX;
- stream = (argc == 1)? get_current_stream() : para_strdup(argv[2]);
+ stream = (argc == 2)? get_current_stream() : para_strdup(argv[2]);
tmp = get_query(stream, NULL, 0);
query = make_message("%s limit %d", tmp, num);
free(tmp);
int i, ret;
char *atts = NULL, *name;
- if (argc < 1)
+ if (argc < 2)
return -E_MYSQL_SYNTAX;
- for (i = 1; i <= argc; i++) {
+ for (i = 1; i < argc; i++) {
int unset = 0;
char *tmp, *p =argv[i];
int len = strlen(p);
no_more_atts:
if (!atts)
return -E_NOATTS;
- if (i > argc) { /* no name given, use current af */
+ if (i >= argc) { /* no name given, use current af */
ret = -E_GET_AUDIO_FILE;
if (!(name = get_current_audio_file()))
goto out;
for (; argv[i] && ret >= 0; i++)
ret = update_atts(fd, argv[i], atts);
}
- refresh_mmd_dbinfo();
+ refresh_selector_info();
out:
return ret;
}
char *name = NULL, *meta = NULL, *atts = NULL;
int i, ret;
- if (argc < 2)
+ if (argc < 3)
return -E_MYSQL_SYNTAX;
if (!(name = escaped_basename(argv[1])))
return -E_ESCAPE;
ret = -E_META;
if (!(meta = get_meta(name, 0)))
goto out;
- for (i = 2; i <= argc; i++) {
+ for (i = 2; i < argc; i++) {
char *ebn, *q;
ret = -E_ESCAPE;
if (!(ebn = escaped_basename(argv[i])))
MYSQL_ROW row;
char *escaped_name;
- if (argc)
+ if (argc != 1)
return -E_MYSQL_SYNTAX;
ret = -E_NORESULT;
result = get_result("select data.name from data left join dir on "
unsigned int num_rows;
MYSQL_ROW row;
- if (argc)
+ if (argc != 1)
return -E_MYSQL_SYNTAX;
out_file = NULL;
tempname = para_strdup("/tmp/mysql.tmp.XXXXXX");
/* create database */
static int com_cdb(int fd, int argc, char *argv[])
{
- char *query, *name;
+ char *query;
int ret;
- if (argc < 1)
- name = "paraslash";
- else {
- ret = -E_NAMETOOLONG;
- name = argv[1];
- if (strlen(name) > MAXLINE)
- goto out;
- }
if (mysql_ptr) {
PARA_INFO_LOG("%s", "closing database\n");
mysql_close(mysql_ptr);
ret = -E_MYSQL_INIT;
if (init_mysql_server() < 0 || !mysql_ptr)
goto out;
- query = make_message("create database %s", name);
+ conf.mysql_database_arg = para_strdup((argc < 2)?
+ "paraslash" : argv[1]);
+ query = make_message("create database %s", conf.mysql_database_arg);
ret = real_query(query);
free(query);
if (ret < 0)
goto out;
/* reconnect with database just created */
mysql_close(mysql_ptr);
- conf.mysql_database_arg = para_strdup(name);
ret = -E_MYSQL_INIT;
if (init_mysql_server() < 0 || !mysql_ptr)
goto out;
if (real_query("insert into streams (name, def) values "
"('current_stream', '(none)')") < 0)
goto out;
- ret = send_va_buffer(fd, "successfully created database %s\n", name);
+ ret = send_va_buffer(fd, "successfully created database %s\n",
+ conf.mysql_database_arg);
out:
return ret;
}