summaryrefslogtreecommitdiffstats
path: root/mbbsd/topsong.c
diff options
context:
space:
mode:
Diffstat (limited to 'mbbsd/topsong.c')
-rw-r--r--mbbsd/topsong.c72
1 files changed, 0 insertions, 72 deletions
diff --git a/mbbsd/topsong.c b/mbbsd/topsong.c
deleted file mode 100644
index 906dadbf..00000000
--- a/mbbsd/topsong.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/* $Id$ */
-#include "bbs.h"
-
-#define MAX_SONGS 300
-#define QCAST int (*)(const void *, const void *)
-
-typedef struct songcmp_t {
- char name[100];
- char cname[100];
- int count;
-} songcmp_t;
-
-static int totalcount = 0;
-
-static int
-count_cmp(songcmp_t * b, songcmp_t * a)
-{
- return (a->count - b->count);
-}
-
-int
-topsong(void)
-{
- more(FN_TOPSONG, YEA);
- return 0;
-}
-
-
-void
-sortsong(void)
-{
- FILE *fo, *fp = fopen(BBSHOME "/" FN_USSONG, "r");
- songcmp_t songs[MAX_SONGS + 1];
- int n;
- char buf[256], cbuf[256];
-
- memset(songs, 0, sizeof(songs));
- if (!fp)
- return;
- if (!(fo = fopen(FN_TOPSONG, "w"))) {
- fclose(fp);
- return;
- }
- totalcount = 0;
- /* XXX: 除了前 MAX_SONGS 首, 剩下不會排序 */
- while (fgets(buf, 200, fp)) {
- chomp(buf);
- strip_blank(cbuf, buf);
- if (!cbuf[0] || !isprint2((int)cbuf[0]))
- continue;
-
- for (n = 0; n < MAX_SONGS && songs[n].name[0]; n++)
- if (!strcmp(songs[n].cname, cbuf))
- break;
- strlcpy(songs[n].name, buf, sizeof(songs[n].name));
- strlcpy(songs[n].cname, cbuf, sizeof(songs[n].cname));
- songs[n].count++;
- totalcount++;
- }
- qsort(songs, MAX_SONGS, sizeof(songcmp_t), (QCAST) count_cmp);
- fprintf(fo,
- " " ANSI_COLOR(36) "──" ANSI_COLOR(37) "名次" ANSI_COLOR(36) "──────" ANSI_COLOR(37) "歌"
- " 名" ANSI_COLOR(36) "───────────" ANSI_COLOR(37) "次數" ANSI_COLOR(36) ""
- "──" ANSI_COLOR(32) "共%d次" ANSI_COLOR(36) "──" ANSI_RESET "\n", totalcount);
- for (n = 0; n < 100 && songs[n].name[0]; n++) {
- fprintf(fo, " %5d. %-38.38s %4d " ANSI_COLOR(32) "[%.2f]" ANSI_RESET "\n", n + 1,
- songs[n].name, songs[n].count,
- (float)songs[n].count / totalcount);
- }
- fclose(fp);
- fclose(fo);
-}