作者itoc.bbs@cpu.tfcis.org (核心動力) 看板: plan
標題Re: [問題] 用支票發給全站獎金
時間動力核心 (2005/04/18 Mon 08:40:31) Updated: 2005/04/22
※ 引述《jcw (夜空下的傑西)》之銘言:
> 爬文有找到以 transacct 直接加錢的方法
> 可是想說既然已經有支票這麼方便的東西
> 就像全站通告一樣的簡便方法
> 能用支票發錢給全站使用者嗎?
: util/Makefile
EXE = ... give_paycheck
: util/give_paycheck.c 新增此程式
/*-------------------------------------------------------*/
/* util/give_paycheck.c ( NTHU CS MapleBBS Ver 3.10 ) */
/*-------------------------------------------------------*/
/* target : 發給全站使用者支票 */
/* create : 05/04/18 */
/* update : / / */
/* author : itoc.bbs@bbs.tnfsh.tn.edu.tw */
/*-------------------------------------------------------*/
#if 0
給 itoc 一張 100 銀 200 金 的支票
% ~/bin/give_paycheck 100 200 itoc
給 sysop 一張 100 銀 0 金 的支票
% ~/bin/give_paycheck 100 0 sysop
給全站使用者各一張 50 銀 30 金 的支票
% ~/bin/give_paycheck 50 30
給全站使用者支票要執行一段時間,請耐心等候
#endif
#include "bbs.h"
int
main(argc, argv)
int argc;
char *argv[];
{
int money, gold;
char c, *str, buf[64];
struct dirent *de;
DIR *dirp;
PAYCHECK paycheck;
if (argc == 3 || argc == 4)
{
money = atoi(argv[1]);
gold = atoi(argv[2]);
if (money < 0 || gold < 0)
printf("money and gold should not be negative.\n");
}
else
{
printf("Usage: %s money gold [userid]\n", argv[0]);
return -1;
}
memset(&paycheck, 0, sizeof(PAYCHECK));
time(&paycheck.tissue);
paycheck.money = money;
paycheck.gold = gold;
strcpy(paycheck.reason, "[發錢] 站長");
if (argc == 4)
{
chdir(BBSHOME);
usr_fpath(buf, argv[3], FN_PAYCHECK);
rec_add(buf, &paycheck, sizeof(PAYCHECK));
return 0;
}
for (c = 'a'; c <= 'z'; c++)
{
sprintf(buf, BBSHOME "/usr/%c", c);
chdir(buf);
if (!(dirp = opendir(".")))
continue;
while (de = readdir(dirp))
{
str = de->d_name;
if (*str <= ' ' || *str == '.')
continue;
sprintf(buf, "%s/" FN_PAYCHECK, str);
rec_add(buf, &paycheck, sizeof(PAYCHECK));
}
closedir(dirp);
}
return 0;
}
--
◤◥ Origin: Maple-itoc˙動力核心 cpu.tfcis.org
▂█ Modify: 2005/04/18 Mon 08:41:30