1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
/* $Id: page.c,v 1.1 2002/03/07 15:13:48 in2 Exp $ */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include "config.h"
#include "pttstruct.h"
#include "modes.h"
#include "common.h"
#include "proto.h"
#define hpressanykey(a) {move(22, 0); prints(a); pressanykey();}
static void filt_railway(char* fpath) {
char buf[256], tmppath[32];
FILE* fp = fopen(fpath, "w"), *tp;
sprintf(tmppath, "%s.railway", fpath);
if(!fp || !(tp = fopen(tmppath, "r")))
return;
while(fgets(buf, 255, tp)) {
if(strstr(buf, "INLINE"))
continue;
if(strstr(buf, "LINK"))
break;
fprintf(fp, "%s", buf);
}
fclose(fp);
fclose(tp);
unlink(tmppath);
}
extern userec_t cuser;
int main_railway() {
fileheader_t mhdr;
char genbuf[200];
int from, to, time_go, time_reach;
char tt[2], type[2];
char command[256], buf[8];
char *addr[]= {
"基隆", "八堵", "七堵", "五堵", "汐止", "南港", "松山", "台北", "萬華",
"板橋", "樹林", "山佳", "鶯歌", "桃園", "內壢", "中壢", "埔心", "楊梅",
"湖口", "新豐", "竹北", "新竹", "香山", "崎頂", "竹南", "造橋", "豐富",
"談文", "大山", "後龍", "龍港", "白沙屯", "新埔", "通霄", "苑裡",
"日南", "大甲", "臺中港", "清水", "沙鹿", "龍井", "大肚", "追分",
"苗栗", "南勢", "銅鑼", "三義", "勝興", "泰安", "后里", "豐原", "潭子",
"台中", "烏日", "成功\", "彰化", "花壇", "員林", "永靖", "社頭",
"田中", "二水", "林內", "石榴", "斗六", "斗南", "石龜", "大林",
"民雄", "嘉義", "水上", "南靖", "後壁", "新營", "柳營", "林鳳營",
"隆田", "拔林", "善化", "新市", "永康", "台南", "保安", "中洲",
"大湖", "路竹", "岡山", "橋頭", "楠梓", "左營", "高雄", "鳳山",
"九曲堂", "屏東", NULL, NULL
};
setutmpmode(RAIL_WAY);
clear();
move(0,25);
prints("\033[1;37;45m 火車查詢系統 \033[1;44;33m作者:Heat\033[m");
move(1,0);
outs("\033[1;33m
1.基隆 16.中壢 31.龍港 46.銅鑼 61.田中 76.林鳳營 91.高雄
2.八堵 17.埔心 32.白沙屯 47.三義 62.二水 77.隆田 92.鳳山
3.七堵 18.楊梅 33.新埔 48.勝興 63.林內 78.拔林 93.九曲堂
4.五堵 19.湖口 34.通霄 49.泰安 64.石榴 79.善化 94.屏東
5.汐止 20.新豐 35.苑裡 50.后里 65.斗六 80.新市
6.南港 21.竹北 36.日南 51.豐原 66.斗南 81.永康
7.松山 22.新竹 37.大甲 52.潭子 67.石龜 82.台南
8.台北 23.香山 38.臺中港 53.台中 68.大林 83.保安
9.萬華 24.崎頂 39.清水 54.烏日 69.民雄 84.中洲
10.板橋 25.竹南 40.沙鹿 55.成功\ 70.嘉義 85.大湖
11.樹林 26.造橋 41.龍井 56.彰化 71.水上 86.路竹
12.山佳 27.豐富 42.大肚 57.花壇 72.南靖 87.岡山
13.鶯歌 28.談文 43.追分 58.員林 73.後壁 88.橋頭
14.桃園 29.大山 44.苗栗 59.永靖 74.新營 89.楠梓
15.內壢 30.後龍 45.南勢 60.社頭 75.柳營 90.左營\033[m");
getdata(17, 0, "\033[1;35m你確定要搜尋嗎?[y/n]:\033[m", buf, 2, LCECHO);
if(buf[0] != 'y' && buf[0] != 'Y')
return 0;
while(1)
if(getdata(18, 0, "\033[1;35m請輸入起站(1-94):\033[m", buf, 3, LCECHO) &&
(from = atoi(buf)) >= 1 && from <= 94)
break;
while(1)
if(getdata(18, 40, "\033[1;35m請輸入目的地(1-94):\033[m",
buf, 3, LCECHO) &&
(to = atoi(buf)) >= 1 && to <= 94)
break;
while(1)
if(getdata(19, 0, "\033[1;35m請輸入時間區段(0-23) 由:\033[m",
buf,3,LCECHO) &&
(time_go = atoi(buf)) >= 0 && time_go <= 23)
break;
while(1)
if(getdata(19, 40, "\033[1;35m到:\033[m", buf, 3, LCECHO) &&
(time_reach=atoi(buf)) >= 0 && time_reach <= 23)
break;
while(1)
if(getdata(20, 0, "\033[1;35m想查詢 1:對號快車 2:普通平快\033[m",
type,2,LCECHO) && (type[0] == '1' || type[0] == '2'))
break;
while(1)
if(getdata(21, 0, "\033[1;35m欲查詢 1:出發時間 2:到達時間\033[m",
tt, 2, LCECHO) &&
(tt[0]=='1' || tt[0]=='2'))
break;
sethomepath(genbuf, cuser.userid);
stampfile(genbuf, &mhdr);
strcpy(mhdr.owner, "Ptt搜尋器");
strncpy(mhdr.title, "火車時刻搜尋結果", TTLEN);
mhdr.savemode = '\0';
sprintf(command,"echo \"from-station=%s&to-station=%s"
"&from-time=%02d00&to-time=%02d00&tt=%s&type=%s\" | "
"lynx -dump -post_data "
"\"http://www.railway.gov.tw/cgi-bin/timetk.cgi\" > %s.railway",
addr[from - 1], addr[to - 1], time_go, time_reach,
(tt[0] == '1') ? "start" : "arriv",
(type[0] == '1') ? "fast" : "slow", genbuf);
system(command);
filt_railway(genbuf);
sethomedir(genbuf, cuser.userid);
if(append_record(genbuf, &mhdr, sizeof(mhdr)) == -1)
return -1;
hpressanykey("\033[1;31m我們會把搜尋結果很快就寄給你唷 ^_^\033[m");
return 0;
}
|