Subversion Repositories mdb

Rev

Rev 31 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 31 Rev 55
Line 67... Line 67...
67
		syslog(LOG_WARNING, "Error opening database %s: %s", fname, sqlite3_errmsg(db));
67
		syslog(LOG_WARNING, "Error opening database %s: %s", fname, sqlite3_errmsg(db));
68
		strcpy(query, "ERROR:LIST:Error opening database;");
68
		strcpy(query, "ERROR:LIST:Error opening database;");
69
		write (s1, query, strlen(query));
69
		write (s1, query, strlen(query));
70
		return FALSE;
70
		return FALSE;
71
	}
71
	}
-
 
72
 
-
 
73
	if (configs.debug)
-
 
74
		syslog(LOG_DEBUG, "Listing %s ...", p_type);
72
	
75
 
73
	/* First count the future result set */
76
	/* First count the future result set */
74
	if (strcmp(p_type, "QUEUE") && strcmp(p_type, "PLAYLIST"))
77
	if (strcmp(p_type, "QUEUE") && strcmp(p_type, "PLAYLIST"))
75
	{
78
	{
76
		strcpy (query, "select count(*) as cnt from musicdb");
79
		strcpy (query, "select count(*) as cnt from musicdb");
77
 
80
 
Line 89... Line 92...
89
			pos = 0;
92
			pos = 0;
90
 
93
 
91
		sqlite3_finalize(res);
94
		sqlite3_finalize(res);
92
	}
95
	}
93
	else if (!strcmp(p_type, "QUEUE"))
96
	else if (!strcmp(p_type, "QUEUE"))
-
 
97
	{
-
 
98
		if (queueTotal <= 0)
-
 
99
		{
-
 
100
			int fd;
-
 
101
 
-
 
102
			strcpy(fname, configs.home);
-
 
103
			strcat(fname, NOWPLAY);
-
 
104
			sleep(1);
-
 
105
			
-
 
106
			if (queueTotal <= 0)
-
 
107
			{
-
 
108
				if ((fd = open(fname, O_RDONLY)) == -1)
-
 
109
				{
-
 
110
					syslog(LOG_WARNING, "Error opening queue %s: %s", fname, strerror(errno));
-
 
111
					strcpy(query, "ERROR:LIST:Error opening queue file;");
-
 
112
					write(s1, query, strlen(query));
-
 
113
					return FALSE;
-
 
114
				}
-
 
115
 
-
 
116
				scanQueue(fd);
-
 
117
				close(fd);
-
 
118
			}
-
 
119
		}
-
 
120
 
94
		pos = queueTotal;
121
		pos = queueTotal;
-
 
122
	}
95
	else
123
	else
96
		pos = countPlaylists();
124
		pos = countPlaylists();
97
 
125
 
-
 
126
	playQuiet = TRUE;
98
	sprintf(hv0, "TOTAL:%d;", pos);
127
	sprintf(hv0, "TOTAL:%d;", pos);
99
	write(s1, hv0, strlen(hv0));
128
	write(s1, hv0, strlen(hv0));
100
 
129
 
101
	strcpy (query, "select id, title, interpret, album, genre, cover from \"main\".\"musicdb\" ");
130
	strcpy (query, "select id, title, interpret, album, genre, cover from \"main\".\"musicdb\" ");
102
	strcat (query, "order by ");
131
	strcat (query, "order by ");
Line 110... Line 139...
110
	else if (strcmp(p_type, "GENRE") == 0)
139
	else if (strcmp(p_type, "GENRE") == 0)
111
		strcat (query, "genre");
140
		strcat (query, "genre");
112
	else if (strcmp(p_type, "QUEUE") == 0)
141
	else if (strcmp(p_type, "QUEUE") == 0)
113
	{
142
	{
114
		sqlite3_close(db);
143
		sqlite3_close(db);
-
 
144
		playQuiet = FALSE;
115
		return listQueue(s1, start, length);
145
		return listQueue(s1, start, length);
116
	}
146
	}
117
	else if (strcmp(p_type, "PLAYLIST") == 0)
147
	else if (strcmp(p_type, "PLAYLIST") == 0)
118
	{
148
	{
119
		sqlite3_close(db);
149
		sqlite3_close(db);
-
 
150
		playQuiet = FALSE;
120
		return listPlaylists(s1, start, length);
151
		return listPlaylists(s1, start, length);
121
	}
152
	}
122
	else if (strcmp(p_type, "USERS") == 0)
153
	else if (strcmp(p_type, "USERS") == 0)
123
	{
154
	{
124
		sqlite3_close(db);
155
		sqlite3_close(db);
-
 
156
		playQuiet = FALSE;
125
		return listUsers(s1, start, length);
157
		return listUsers(s1, start, length);
126
	}
158
	}
127
	else		/* No or unknown type */
159
	else		/* No or unknown type */
128
	{
160
	{
129
		strcpy (query, "ERROR:LIST:Missing type;");
161
		strcpy (query, "ERROR:LIST:Missing type;");
130
		write(s1, query, strlen(query));
162
		write(s1, query, strlen(query));
131
		sqlite3_close(db);
163
		sqlite3_close(db);
-
 
164
		playQuiet = FALSE;
132
		return FALSE;
165
		return FALSE;
133
	}
166
	}
134
 
167
 
135
	/* Tell client which page to show */
168
	/* Tell client which page to show */
136
	sprintf(hv0, "PAGE:%s;", p_type);
169
	sprintf(hv0, "PAGE:%s;", p_type);
Line 142... Line 175...
142
	if (sqlite3_prepare(db, query, -1, &res, NULL) != SQLITE_OK)
175
	if (sqlite3_prepare(db, query, -1, &res, NULL) != SQLITE_OK)
143
	{
176
	{
144
		syslog(LOG_DAEMON, "Error preparing SQL statement [%s]: %s", query, sqlite3_errmsg(db));
177
		syslog(LOG_DAEMON, "Error preparing SQL statement [%s]: %s", query, sqlite3_errmsg(db));
145
		strcpy(query, "ERROR:USER:Error preparing a SQL statement;");
178
		strcpy(query, "ERROR:USER:Error preparing a SQL statement;");
146
		write(s1, query, strlen(query));
179
		write(s1, query, strlen(query));
-
 
180
		playQuiet = FALSE;
147
		return FALSE;
181
		return FALSE;
148
	}
182
	}
149
 
183
 
150
	while ((rc = sqlite3_step(res)) == SQLITE_ROW)
184
	while ((rc = sqlite3_step(res)) == SQLITE_ROW)
151
	{
185
	{
Line 161... Line 195...
161
			break;
195
			break;
162
	}
196
	}
163
 
197
 
164
	sqlite3_finalize(res);
198
	sqlite3_finalize(res);
165
	sqlite3_close(db);
199
	sqlite3_close(db);
-
 
200
	playQuiet = FALSE;
166
	return TRUE;
201
	return TRUE;
167
}
202
}
168
 
203
 
169
int listQueue(int s1, int start, int length)
204
int listQueue(int s1, int start, int length)
170
{
205
{
Line 200... Line 235...
200
 
235
 
201
	sprintf(hv0, "PAGE:QUEUE;TOTAL:%d;", queueTotal);
236
	sprintf(hv0, "PAGE:QUEUE;TOTAL:%d;", queueTotal);
202
	write (s1, hv0, strlen(hv0));
237
	write (s1, hv0, strlen(hv0));
203
	act = pqueue;
238
	act = pqueue;
204
	pos = line = 1;
239
	pos = line = 1;
-
 
240
	playQuiet = TRUE;
205
 
241
 
206
	while (act)
242
	while (act)
207
	{
243
	{
208
		if (pos < start)
244
		if (pos < start)
209
		{
245
		{
Line 265... Line 301...
265
		act = act->next;
301
		act = act->next;
266
		pos++;
302
		pos++;
267
		line++;
303
		line++;
268
	}
304
	}
269
 
305
 
-
 
306
	playQuiet = FALSE;
270
	return TRUE;
307
	return TRUE;
271
}
308
}
272
 
309
 
273
int listFolders(int s1, char *p_type, int start, int length)
310
int listFolders(int s1, char *p_type, int start, int length)
274
{
311
{
Line 318... Line 355...
318
	cp.type = p_type;
355
	cp.type = p_type;
319
	cp.start = start;
356
	cp.start = start;
320
	cp.length = length;
357
	cp.length = length;
321
	globalLine = 0;
358
	globalLine = 0;
322
	globalPos = 0;
359
	globalPos = 0;
-
 
360
	playQuiet = TRUE;
323
 
361
 
324
	if ((rc = sqlite3_exec(db, query, folderCallback, (void *)&cp, &zErrMsg)) != SQLITE_OK)
362
	if ((rc = sqlite3_exec(db, query, folderCallback, (void *)&cp, &zErrMsg)) != SQLITE_OK)
325
	{
363
	{
326
		syslog(LOG_WARNING, "SQL error [%s]: %s", query, zErrMsg);
364
		syslog(LOG_WARNING, "SQL error [%s]: %s", query, zErrMsg);
327
		sqlite3_free(zErrMsg);
365
		sqlite3_free(zErrMsg);
Line 336... Line 374...
336
		sprintf(query, "TOTAL:%d;", globalPos + 1);
374
		sprintf(query, "TOTAL:%d;", globalPos + 1);
337
		write (s1, query, strlen(query));
375
		write (s1, query, strlen(query));
338
	}
376
	}
339
 
377
 
340
	sqlite3_close(db);
378
	sqlite3_close(db);
-
 
379
	playQuiet = FALSE;
341
	return TRUE;
380
	return TRUE;
342
}
381
}
343
 
382
 
344
static int listCallback(int s1, char *type, int line, sqlite3_stmt *res)
383
static int listCallback(int s1, char *type, int line, sqlite3_stmt *res)
345
{
384
{
Line 494... Line 533...
494
	
533
	
495
	if (sqlite3_step(res) == SQLITE_ROW)
534
	if (sqlite3_step(res) == SQLITE_ROW)
496
		pos = sqlite3_column_int(res, 0);
535
		pos = sqlite3_column_int(res, 0);
497
	else
536
	else
498
		pos = 0;
537
		pos = 0;
499
	
538
 
-
 
539
	playQuiet = TRUE;
500
	sprintf(hv0, "TOTAL:%d;", pos);
540
	sprintf(hv0, "TOTAL:%d;", pos);
501
	write(s1, hv0, strlen(hv0));
541
	write(s1, hv0, strlen(hv0));
502
	sqlite3_finalize(res);
542
	sqlite3_finalize(res);
503
	
543
	
504
	sprintf (query, "select id, title, interpret, album, genre, cover from \"main\".\"musicdb\" where %s = \"%s\" order by title", field, name);
544
	sprintf (query, "select id, title, interpret, album, genre, cover from \"main\".\"musicdb\" where %s = \"%s\" order by title", field, name);
Line 513... Line 553...
513
	if (sqlite3_prepare(db, query, -1, &res, NULL) != SQLITE_OK)
553
	if (sqlite3_prepare(db, query, -1, &res, NULL) != SQLITE_OK)
514
	{
554
	{
515
		syslog(LOG_DAEMON, "Error preparing SQL statement [%s]: %s", query, sqlite3_errmsg(db));
555
		syslog(LOG_DAEMON, "Error preparing SQL statement [%s]: %s", query, sqlite3_errmsg(db));
516
		strcpy(query, "ERROR:LIST:Error preparing a SQL statement;");
556
		strcpy(query, "ERROR:LIST:Error preparing a SQL statement;");
517
		write(s1, query, strlen(query));
557
		write(s1, query, strlen(query));
-
 
558
		playQuiet = FALSE;
518
		return FALSE;
559
		return FALSE;
519
	}
560
	}
520
	
561
	
521
	while ((rc = sqlite3_step(res)) == SQLITE_ROW)
562
	while ((rc = sqlite3_step(res)) == SQLITE_ROW)
522
	{
563
	{
Line 532... Line 573...
532
		pos++;
573
		pos++;
533
	}
574
	}
534
	
575
	
535
	sqlite3_finalize(res);
576
	sqlite3_finalize(res);
536
	sqlite3_close(db);
577
	sqlite3_close(db);
-
 
578
	playQuiet = FALSE;
537
	return TRUE;
579
	return TRUE;
538
}
580
}
539
 
581
 
540
/*
582
/*
541
 * Count the playlists of the users and return the result.
583
 * Count the playlists of the users and return the result.
Line 571... Line 613...
571
		strcpy(hv0, "ERROR:PLAYLIST:No user selected;");
613
		strcpy(hv0, "ERROR:PLAYLIST:No user selected;");
572
		write(s1, hv0, strlen(hv0));
614
		write(s1, hv0, strlen(hv0));
573
		return FALSE;
615
		return FALSE;
574
	}
616
	}
575
 
617
 
-
 
618
	playQuiet = TRUE;
576
	strcpy(hv0, "PAGE:PLAYLIST;");
619
	strcpy(hv0, "PAGE:PLAYLIST;");
577
	write(s1, hv0, strlen(hv0));
620
	write(s1, hv0, strlen(hv0));
578
 
621
 
579
	act = userchain;
622
	act = userchain;
580
	pos = line = 1;
623
	pos = line = 1;
Line 603... Line 646...
603
 
646
 
604
		act = act->next;
647
		act = act->next;
605
		line++;
648
		line++;
606
	}
649
	}
607
 
650
 
-
 
651
	playQuiet = FALSE;
608
	return TRUE;
652
	return TRUE;
609
}
653
}
610
 
654
 
611
int listUserPlaylist(int s1, const char *user, const char *playlist, int start, int length)
655
int listUserPlaylist(int s1, const char *user, const char *playlist, int start, int length)
612
{
656
{
Line 665... Line 709...
665
		strcpy(query, "ERROR:USER:Error opening database;");
709
		strcpy(query, "ERROR:USER:Error opening database;");
666
		write (s1, query, strlen(query));
710
		write (s1, query, strlen(query));
667
		return FALSE;
711
		return FALSE;
668
	}
712
	}
669
 
713
 
-
 
714
	playQuiet = TRUE;
670
	strcpy(hv0, "PAGE:PLAYLIST;");
715
	strcpy(hv0, "PAGE:PLAYLIST;");
671
	write(s1, hv0, strlen(hv0));
716
	write(s1, hv0, strlen(hv0));
672
 
717
 
673
	sprintf(query, "select count(*) from \"main\".\"playlists\" where userid = %d", act->id);
718
	sprintf(query, "select count(*) from \"main\".\"playlists\" where userid = %d", act->id);
674
 
719
 
675
	if (sqlite3_prepare(db, query, -1, &res, NULL) != SQLITE_OK)
720
	if (sqlite3_prepare(db, query, -1, &res, NULL) != SQLITE_OK)
676
	{
721
	{
677
		syslog(LOG_DAEMON, "Error preparing SQL statement [%s]: %s", query, sqlite3_errmsg(db));
722
		syslog(LOG_DAEMON, "Error preparing SQL statement [%s]: %s", query, sqlite3_errmsg(db));
678
		strcpy(hv0, "ERROR:USER:Error preparing a SQL statement;");
723
		strcpy(hv0, "ERROR:USER:Error preparing a SQL statement;");
679
		write(s1, hv0, strlen(hv0));
724
		write(s1, hv0, strlen(hv0));
-
 
725
		playQuiet = FALSE;
680
		return FALSE;
726
		return FALSE;
681
	}
727
	}
682
	
728
	
683
	if ((rc = sqlite3_step(res)) == SQLITE_ROW)
729
	if ((rc = sqlite3_step(res)) == SQLITE_ROW)
684
	{
730
	{
Line 697... Line 743...
697
	if (sqlite3_prepare(db, query, -1, &res, NULL) != SQLITE_OK)
743
	if (sqlite3_prepare(db, query, -1, &res, NULL) != SQLITE_OK)
698
	{
744
	{
699
		syslog(LOG_DAEMON, "Error preparing SQL statement [%s]: %s", query, sqlite3_errmsg(db));
745
		syslog(LOG_DAEMON, "Error preparing SQL statement [%s]: %s", query, sqlite3_errmsg(db));
700
		strcpy(hv0, "ERROR:USER:Error preparing a SQL statement;");
746
		strcpy(hv0, "ERROR:USER:Error preparing a SQL statement;");
701
		write(s1, hv0, strlen(hv0));
747
		write(s1, hv0, strlen(hv0));
-
 
748
		playQuiet = FALSE;
702
		return FALSE;
749
		return FALSE;
703
	}
750
	}
704
 
751
 
705
	pos = 1;
752
	pos = 1;
706
	line = 0;
753
	line = 0;
Line 762... Line 809...
762
		pos++;
809
		pos++;
763
	}
810
	}
764
	
811
	
765
	sqlite3_finalize(res);
812
	sqlite3_finalize(res);
766
	sqlite3_close(db);
813
	sqlite3_close(db);
-
 
814
	playQuiet = FALSE;
767
	return TRUE;
815
	return TRUE;
768
}
816
}
769
 
817
 
770
int listUsers(int s1, int start, int length)
818
int listUsers(int s1, int start, int length)
771
{
819
{
Line 813... Line 861...
813
		write(s1, hv0, strlen(hv0));
861
		write(s1, hv0, strlen(hv0));
814
		return FALSE;
862
		return FALSE;
815
	}
863
	}
816
 
864
 
817
	pos = 0;
865
	pos = 0;
-
 
866
	playQuiet = TRUE;
818
 
867
 
819
	while ((rc = sqlite3_step(res)) == SQLITE_ROW)
868
	while ((rc = sqlite3_step(res)) == SQLITE_ROW)
820
	{
869
	{
821
		pos++;
870
		pos++;
822
 
871
 
Line 840... Line 889...
840
		write(s1, hv0, strlen(hv0));
889
		write(s1, hv0, strlen(hv0));
841
	}
890
	}
842
 
891
 
843
	sqlite3_finalize(res);
892
	sqlite3_finalize(res);
844
	sqlite3_close(db);
893
	sqlite3_close(db);
-
 
894
	playQuiet = FALSE;
845
	return TRUE;
895
	return TRUE;
846
}
896
}