Subversion Repositories mdb

Rev

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

Rev 18 Rev 24
Line 117... Line 117...
117
	else if (strcmp(p_type, "PLAYLIST") == 0)
117
	else if (strcmp(p_type, "PLAYLIST") == 0)
118
	{
118
	{
119
		sqlite3_close(db);
119
		sqlite3_close(db);
120
		return listPlaylists(s1, start, length);
120
		return listPlaylists(s1, start, length);
121
	}
121
	}
-
 
122
	else if (strcmp(p_type, "USERS") == 0)
-
 
123
	{
-
 
124
		sqlite3_close(db);
-
 
125
		return listUsers(s1, start, length);
-
 
126
	}
122
	else		/* No or unknown type */
127
	else		/* No or unknown type */
123
	{
128
	{
124
		strcpy (query, "ERROR:LIST:Missing type;");
129
		strcpy (query, "ERROR:LIST:Missing type;");
125
		write(s1, query, strlen(query));
130
		write(s1, query, strlen(query));
126
		sqlite3_close(db);
131
		sqlite3_close(db);
Line 748... Line 753...
748
	
753
	
749
	sqlite3_finalize(res);
754
	sqlite3_finalize(res);
750
	sqlite3_close(db);
755
	sqlite3_close(db);
751
	return TRUE;
756
	return TRUE;
752
}
757
}
-
 
758
 
-
 
759
int listUsers(int s1, int start, int length)
-
 
760
{
-
 
761
	char query[1024], hv0[256];
-
 
762
	char fname[256], uname[128], *un;
-
 
763
	sqlite3 *db;
-
 
764
	int rc, id, total, pos;
-
 
765
	sqlite3_stmt *res;
-
 
766
	
-
 
767
	rc = sqlite3_open(fname, &db);
-
 
768
	
-
 
769
	if (rc)
-
 
770
	{
-
 
771
		syslog(LOG_WARNING, "Error opening database %s: %s", fname, sqlite3_errmsg(db));
-
 
772
		strcpy(query, "ERROR:LIST:Error opening database;");
-
 
773
		write (s1, query, strlen(query));
-
 
774
		return FALSE;
-
 
775
	}
-
 
776
	
-
 
777
	sprintf(query, "select distinct count(*) from users order by uname");
-
 
778
	
-
 
779
	if (sqlite3_prepare(db, query, -1, &res, NULL) != SQLITE_OK)
-
 
780
	{
-
 
781
		syslog(LOG_DAEMON, "Error preparing SQL statement [%s]: %s", query, sqlite3_errmsg(db));
-
 
782
		strcpy(hv0, "ERROR:USER:Error preparing a SQL statement;");
-
 
783
		write(s1, hv0, strlen(hv0));
-
 
784
		return FALSE;
-
 
785
	}
-
 
786
	
-
 
787
	if ((rc = sqlite3_step(res)) == SQLITE_ROW)
-
 
788
	{
-
 
789
		total = sqlite3_column_int(res, 0);
-
 
790
		sprintf(hv0, "TOTAL:%d;", total);
-
 
791
		write (s1, hv0, strlen(hv0));
-
 
792
	}
-
 
793
 
-
 
794
	sqlite3_finalize(res);
-
 
795
	
-
 
796
	strcpy (query, "select distinct uname, id from users order by users");
-
 
797
 
-
 
798
	if (sqlite3_prepare(db, query, -1, &res, NULL) != SQLITE_OK)
-
 
799
	{
-
 
800
		syslog(LOG_DAEMON, "Error preparing SQL statement [%s]: %s", query, sqlite3_errmsg(db));
-
 
801
		strcpy(hv0, "ERROR:USER:Error preparing a SQL statement;");
-
 
802
		write(s1, hv0, strlen(hv0));
-
 
803
		return FALSE;
-
 
804
	}
-
 
805
 
-
 
806
	pos = 0;
-
 
807
 
-
 
808
	while ((rc = sqlite3_step(res)) == SQLITE_ROW)
-
 
809
	{
-
 
810
		pos++;
-
 
811
 
-
 
812
		if (pos < start)
-
 
813
			continue;
-
 
814
 
-
 
815
		if (pos >= (start + length))
-
 
816
			break;
-
 
817
 
-
 
818
		strncpy(uname, (const char *)sqlite3_column_text(res, 0), sizeof(uname));
-
 
819
		id = sqlite3_column_int(res, 1);
-
 
820
		un = urlencode(uname);
-
 
821
 
-
 
822
		if (un)
-
 
823
		{
-
 
824
			strncpy(uname, un, sizeof(uname));
-
 
825
			free(un);
-
 
826
		}
-
 
827
 
-
 
828
		sprintf(hv0, "USERS:%d:%d:%s;", id, pos+1, uname);
-
 
829
		write(s1, hv0, strlen(hv0));
-
 
830
	}
-
 
831
 
-
 
832
	sqlite3_finalize(res);
-
 
833
	sqlite3_close(db);
-
 
834
	return TRUE;
-
 
835
}