Subversion Repositories mdb

Rev

Rev 24 | Rev 29 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 24 Rev 25
Line 135... Line 135...
135
	/* Tell client which page to show */
135
	/* Tell client which page to show */
136
	sprintf(hv0, "PAGE:%s;", p_type);
136
	sprintf(hv0, "PAGE:%s;", p_type);
137
	write (s1, hv0, strlen (hv0));
137
	write (s1, hv0, strlen (hv0));
138
 
138
 
139
	/* Retrieve data from database */
139
	/* Retrieve data from database */
140
	line = 0;
140
	line = pos = 0;
141
 
141
 
142
	if (sqlite3_prepare(db, query, -1, &res, NULL) != SQLITE_OK)
142
	if (sqlite3_prepare(db, query, -1, &res, NULL) != SQLITE_OK)
143
	{
143
	{
144
		syslog(LOG_DAEMON, "Error preparing SQL statement [%s]: %s", query, sqlite3_errmsg(db));
144
		syslog(LOG_DAEMON, "Error preparing SQL statement [%s]: %s", query, sqlite3_errmsg(db));
145
		strcpy(query, "ERROR:USER:Error preparing a SQL statement;");
145
		strcpy(query, "ERROR:USER:Error preparing a SQL statement;");
Line 147... Line 147...
147
		return FALSE;
147
		return FALSE;
148
	}
148
	}
149
 
149
 
150
	while ((rc = sqlite3_step(res)) == SQLITE_ROW)
150
	while ((rc = sqlite3_step(res)) == SQLITE_ROW)
151
	{
151
	{
152
		line++;
152
		pos++;
153
 
153
 
154
		if (line >= start && line < (start + length))
154
		if (pos >= start && pos < (start + length))
-
 
155
		{
-
 
156
			line++;
155
			listCallback(s1, p_type, line, res);
157
			listCallback(s1, p_type, line, res);
-
 
158
		}
156
 
159
 
157
		if (line >= (start + length))
160
		if (pos >= (start + length))
158
			break;
161
			break;
159
	}
162
	}
160
 
163
 
161
	sqlite3_finalize(res);
164
	sqlite3_finalize(res);
162
	sqlite3_close(db);
165
	sqlite3_close(db);
Line 201... Line 204...
201
	pos = line = 1;
204
	pos = line = 1;
202
 
205
 
203
	while (act)
206
	while (act)
204
	{
207
	{
205
		if (pos < start)
208
		if (pos < start)
-
 
209
		{
-
 
210
			act = act->next;
-
 
211
			pos++;
206
			continue;
212
			continue;
-
 
213
		}
207
		else if (pos > (start + length))
214
		else if (pos >= (start + length))
208
			break;
215
			break;
209
 
216
 
210
		title = urlencode(act->title);
217
		title = urlencode(act->title);
211
		artist = urlencode(act->artist);
218
		artist = urlencode(act->artist);
212
		album = urlencode(act->album);
219
		album = urlencode(act->album);
Line 254... Line 261...
254
			strcat(buffer, act->cover);
261
			strcat(buffer, act->cover);
255
 
262
 
256
		strcat(buffer, ";");
263
		strcat(buffer, ";");
257
		write(s1, buffer, strlen(buffer));
264
		write(s1, buffer, strlen(buffer));
258
		act = act->next;
265
		act = act->next;
-
 
266
		pos++;
259
		line++;
267
		line++;
260
	}
268
	}
261
 
269
 
262
	return TRUE;
270
	return TRUE;
263
}
271
}
Line 301... Line 309...
301
		sqlite3_close(db);
309
		sqlite3_close(db);
302
		return FALSE;
310
		return FALSE;
303
	}
311
	}
304
 
312
 
305
	strcat (query, field);
313
	strcat (query, field);
306
	strcat (query, ",cover from \"main\".\"musicdb\" order by ");
314
	strcat (query, " from \"main\".\"musicdb\" order by ");
307
	strcat (query, field);
315
	strcat (query, field);
308
 
316
 
309
	cp.s1 = s1;
317
	cp.s1 = s1;
310
	cp.type = p_type;
318
	cp.type = p_type;
311
	cp.start = start;
319
	cp.start = start;
312
	cp.length = length;
320
	cp.length = length;
313
	globalLine = 0;
321
	globalLine = 0;
314
	globalPos = -1;
322
	globalPos = 0;
315
 
323
 
316
	if ((rc = sqlite3_exec(db, query, folderCallback, (void *)&cp, &zErrMsg)) != SQLITE_OK)
324
	if ((rc = sqlite3_exec(db, query, folderCallback, (void *)&cp, &zErrMsg)) != SQLITE_OK)
317
	{
325
	{
318
		syslog(LOG_WARNING, "SQL error [%s]: %s", query, zErrMsg);
326
		syslog(LOG_WARNING, "SQL error [%s]: %s", query, zErrMsg);
319
		sqlite3_free(zErrMsg);
327
		sqlite3_free(zErrMsg);
Line 397... Line 405...
397
}
405
}
398
 
406
 
399
static int folderCallback(void *hint, int argc, char **argv, char **azColName)
407
static int folderCallback(void *hint, int argc, char **argv, char **azColName)
400
{
408
{
401
	int i;
409
	int i;
402
	char id3_buffer[256], id3_cover[512];
410
	char id3_buffer[256];
403
	char buffer[8192];
411
	char buffer[8192];
404
	char *buf;
412
	char *buf;
405
	struct callPars *cp;
413
	struct callPars *cp;
406
 
414
 
407
	globalPos++;
415
	globalPos++;
408
	cp = (struct callPars *)hint;
416
	cp = (struct callPars *)hint;
409
	memset(id3_buffer, 0, sizeof(id3_buffer));
417
	memset(id3_buffer, 0, sizeof(id3_buffer));
410
	memset(id3_cover, 0, sizeof(id3_cover));
-
 
411
 
418
 
412
	if (globalPos < cp->start || globalPos >= (cp->start + cp->length))
419
	if (globalPos < cp->start || globalPos >= (cp->start + cp->length))
413
		return 0;
420
		return 0;
414
 
421
 
415
	for(i = 0; i < argc; i++)
422
	for(i = 0; i < argc; i++)
416
	{
423
	{
417
		if (strcasecmp(azColName[i], "title") == 0 || strcasecmp(azColName[i], "interpret") == 0 ||
424
		if (strcasecmp(azColName[i], "title") == 0 || strcasecmp(azColName[i], "interpret") == 0 ||
418
			strcasecmp(azColName[i], "album") == 0 || strcasecmp(azColName[i], "genre") == 0)
425
			strcasecmp(azColName[i], "album") == 0 || strcasecmp(azColName[i], "genre") == 0)
419
			if (argv[i])
426
			if (argv[i])
420
				strncpy(id3_buffer, argv[i], sizeof(id3_buffer));
427
				strncpy(id3_buffer, argv[i], sizeof(id3_buffer));
421
 
-
 
422
		if (strcasecmp(azColName[i], "cover") == 0)
-
 
423
			if (argv[i])
-
 
424
				strncpy(id3_cover, argv[i], sizeof(id3_cover));
-
 
425
	}
428
	}
426
 
429
 
427
	buf = urlencode(id3_buffer);
430
	buf = urlencode(id3_buffer);
428
	globalLine++;
431
	globalLine++;
429
 
432
 
Line 435... Line 438...
435
		free(buf);
438
		free(buf);
436
	}
439
	}
437
	else
440
	else
438
		strcat(buffer, id3_buffer);
441
		strcat(buffer, id3_buffer);
439
 
442
 
440
	strcat(buffer, ":");
-
 
441
	strcat(buffer, id3_cover);
-
 
442
	strcat(buffer, ";");
443
	strcat(buffer, ";");
443
	write(cp->s1, buffer, strlen(buffer));
444
	write(cp->s1, buffer, strlen(buffer));
444
	return 0;
445
	return 0;
445
}
446
}
446
 
447
 
Line 501... Line 502...
501
	sqlite3_finalize(res);
502
	sqlite3_finalize(res);
502
	
503
	
503
	sprintf (query, "select id, title, interpret, album, genre, cover from \"main\".\"musicdb\" where %s = \"%s\" order by title", field, name);
504
	sprintf (query, "select id, title, interpret, album, genre, cover from \"main\".\"musicdb\" where %s = \"%s\" order by title", field, name);
504
 
505
 
505
	/* Tell client which page to show */
506
	/* Tell client which page to show */
506
	sprintf(hv0, "PAGE:%s;FOLDER:%s;", p_type, name);
507
	sprintf(hv0, "PAGE:%s;FOLDERNAME:%s;", p_type, name);
507
	write (s1, hv0, strlen (hv0));
508
	write (s1, hv0, strlen (hv0));
508
	
509
	
509
	/* Retrieve data from database */
510
	/* Retrieve data from database */
510
	line = 0;
511
	line = 0;
511
	
512