summaryrefslogblamecommitdiffstats
path: root/util/horoscope.c
blob: 936c272763a18e19ab50007979f3e2fb06ffa02c (plain) (tree)
1
2
3
4
5
          
                
                
 
                     




























                                     
                 
                                
                     

                                     

                               
                     
                           

               
                               




                          
                               




                          
                               




                          
                               




                         
                               




                         
                               




                         
                               




                         
                               




                         
                               




                         
                               




                         
                               




                         
                               









































                                                                                 
/* $Id$ */
#define _UTIL_C_
#include "bbs.h"

struct userec_t user;

int main() {
    int i, j, k;
    FILE *fp;
    int max, item, maxhoroscope;

    int act[12];

    char *name[13] =
    {"牡羊",
     "金牛",
     "雙子",
     "巨蟹",
     "獅子",
     "處女",
     "天秤",
     "天蠍",
     "射手",
     "摩羯",
     "水瓶",
     "雙魚",
     ""
    };
    char *blk[10] =
    {
    "  ", "▏", "▎", "▍", "▌",
    "▋", "▊", "▉", "█", "█",
    };

    attach_SHM();
    memset(act, 0, sizeof(act));
    if(passwd_init())
    exit(1);
    for(k = 1; k <= MAX_USERS; k++) {
    passwd_query(k, &user);
    if(!user.userid[0])
        continue;
    switch (user.month)
    {
    case 1:
        if (user.day <= 19)
        act[9]++;
        else
        act[10]++;
        break;
    case 2:
        if (user.day <= 18)
        act[10]++;
        else
        act[11]++;
        break;
    case 3:
        if (user.day <= 20)
        act[11]++;
        else
        act[0]++;
        break;
    case 4:
        if (user.day <= 19)
        act[0]++;
        else
        act[1]++;
        break;
    case 5:
        if (user.day <= 20)
        act[1]++;
        else
        act[2]++;
        break;
    case 6:
        if (user.day <= 21)
        act[2]++;
        else
        act[3]++;
        break;
    case 7:
        if (user.day <= 22)
        act[3]++;
        else
        act[4]++;
        break;
    case 8:
        if (user.day <= 22)
        act[4]++;
        else
        act[5]++;
        break;
    case 9:
        if (user.day <= 22)
        act[5]++;
        else
        act[6]++;
        break;
    case 10:
        if (user.day <= 23)
        act[6]++;
        else
        act[7]++;
        break;
    case 11:
        if (user.day <= 22)
        act[7]++;
        else
        act[8]++;
        break;
    case 12:
        if (user.day <= 21)
        act[8]++;
        else
        act[9]++;
        break;
    }
    }

    for (i = max = maxhoroscope = 0; i < 12; i++)
    {
    if (act[i] > max)
    {
        max = act[i];
        maxhoroscope = i;
    }
    }

    item = max / 30 + 1;

    if ((fp = fopen(BBSHOME"/etc/horoscope", "w")) == NULL)
    {
    printf("cann't open etc/horoscope\n");
    return 1;
    }

    for (i = 0; i < 12; i++)
    {
    fprintf(fp, " %s座 ", name[i]);
    for (j = 0; j < act[i] / item; j++)
    {
        fprintf(fp, "%2s", blk[9]);
    }
    /* 為了剛好一頁 */
    if (i != 11)
        fprintf(fp, "%2s %d\n\n", blk[(act[i] % item) * 10 / item],
            act[i]);
    else
        fprintf(fp, "%2s %d\n", blk[(act[i] % item) * 10 / item],
            act[i]);
    }
    fclose(fp);
    return 0;
}