�i �M.�Í�L�j�ƒ�@C‚Å(�@�LúD�M)ƒuƒ‰ƒEƒU
�¡ ‚±‚̃XƒŒƒbƒh‚Í‰ß‹Žƒ�ƒO‘qŒÉ‚ÉŠi”[‚³‚ê‚Ä‚¢‚Ü‚·
0001‚¨‚É‚¬‚è‚̂̂½‚ñ �ŸqCUWFi42uI
NGNG0002ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG00032
NGNG0004ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG0005ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG‚Ç‚¤‚¼�A‚²Ž©•ª‚Å�ì‚Á‚Ä‚‚¾‚³‚¢�B
0006ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG0007ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG�@�i�@�L�Í�M�j�ƒ�@‚Ê‚é‚Û
0008ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNGŒ»�݃eƒLƒXƒg•\ަ‚Ü‚Å
cursesŽg‚Á‚Ä‚é‚Ì‚Éwinsock‚àŽg‚Á‚Ä‚½‚è‚·‚é‚©‚ç(Œã‚Å’¼‚·‚‚à‚肾‚Á‚½)
’¼‚·‚È‚èCygwin‚Æ‚©‚‚©‚¤‚Ȃ肵‚È‚¢‚Æ“®‚©‚È‚¢‚¯‚Ç�«
0009ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG#include <stdio.h>
#include "get.h"
#include "token.h"
#include "viewer.h"
struct ObjectFile ObjFile;
struct VSCRIPTS *vsrpts;
int main(int argc,char *argv[]){
char CacheFolder[]="./cache/";
unsigned char Done=1;
getInit();
viewerInit();
while(Done){
getMain(argv[1],&ObjFile,CacheFolder);
readdata(ObjFile.FName);
vsrpts=tokenMain();
switch(viwerMain(vsrpts)){
case EXIT:
Done=0;
break;
default :
}
}
viewerExit();
exit(0);
}
0010ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG#define MAXNUM 255
struct ObjectFile{
char *url;
char Host[MAXNUM];
int nPort;
char FPath[MAXNUM];
char FName[MAXNUM];
};
int getMain(char url[],struct ObjectFile *,char *);
int UrlToken(char url[],struct ObjectFile *);
int GetHostInfo(struct ObjectFile *);
int DefinitionPort(struct ObjectFile *);
int mstderr(int,struct ObjectFile *);
void mstddebug(struct ObjectFile *);
0011ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <windows.h>
#include <winsock.h>
#define RECVBUF 1024
#include "get.h"
enum ERRID {ERR_URL,ERR_HOST,ERR_SOCKET,ERR_CONNECT,ERR_FDOPEN,ERR_FOPEN};
enum RET_VALUE {FAILED=-1,SUCCESS};
enum PROTOCOL {HTTP,FTP};
struct sockaddr_in target_server;
char ClientName[]="GET";
float version=0.91;
char *recvbuffer=NULL;
int getInit(){
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD(1,1);
WSAStartup(wVersionRequested, &wsaData);
}
0012ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNGint getMain(char url[],struct ObjectFile *ObjFile,char *CFolder){
FILE *fp;
int i=0,flag=0;
SOCKET s;
char buf[MAXNUM],buffer,fflag[4],sfname[MAXNUM];
if(UrlToken(url,ObjFile)==FAILED) return(mstderr(ERR_URL,ObjFile));
if(GetHostInfo(ObjFile)==FAILED) return(mstderr(ERR_HOST,ObjFile));
DefinitionPort(ObjFile);
if ((s=socket(AF_INET,SOCK_STREAM,0))<0) return(mstderr(ERR_SOCKET,ObjFile));
if (connect(s,(struct sockaddr *)&target_server,sizeof(target_server)) == -1) return(mstderr(ERR_CONNECT,ObjFile));
mstddebug(ObjFile);
sprintf(sfname,"%s%s",CFolder,ObjFile->FName);
strcpy(ObjFile->FName,sfname);
if((fp=fopen(sfname,"wb+")) == NULL) return(mstderr(ERR_FOPEN,ObjFile));
sprintf(buf,"GET %s HTTP/1.0\r\nUser-Agent: %s/%f\r\nHost: %s:%d\r\n\r\n",ObjFile->FPath,ClientName,version,ObjFile->Host,ObjFile->nPort);
send(s,buf,strlen(buf),0);
0013ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNGwhile(recv(s,&buffer,1,0)==1){
if(!flag && (buffer=='\r' || buffer=='\n')){
fflag[i]=buffer;
i++;
if(!strcmp(fflag,"\r\n\r\n") || !strcmp(fflag,"\n\n") || i==4){
flag=1;
continue;
}
}else{
i=0;
memset(fflag,'\0',4);
}
if(flag) fwrite(&buffer,sizeof(char),1,fp);
}
printf("\nƒ_ƒEƒ“ƒ��[ƒhŠ®—¹\n");
fclose(fp);
close(s);
}
int DefinitionPort(struct ObjectFile *ObjFile){
struct servent *service;
if(ObjFile->nPort == 0){
service = getservbyname("http","tcp");
if (service!=NULL) ObjFile->nPort=ntohs(service->s_port);
else ObjFile->nPort=80;
}
target_server.sin_port = htons(ObjFile->nPort);
return(SUCCESS);
}
0014ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNGint GetHostInfo(struct ObjectFile *ObjFile){
struct hostent *servhost;
servhost = gethostbyname(ObjFile->Host);
if (servhost==NULL) return(FAILED);
memset((char*)&target_server,0,sizeof(target_server));
target_server.sin_family = AF_INET;
memmove((char *)&target_server.sin_addr,servhost->h_addr,servhost->h_length);
return(SUCCESS);
}
int UrlToken(char url[],struct ObjectFile *ObjFile){
int itmp;
char *tmp,*tmp2,*tmp_host;
if(!strncmp(url,"http://",7)) tmp=url+7;
else if(!strncmp(url,"ftp://",6)) tmp=url+6;
else return(FAILED);
memset((char*)ObjFile,0,sizeof(struct ObjectFile));
ObjFile->url=strdup(url);
itmp=strchr(tmp,'/')-tmp;
tmp_host=(char *)malloc(itmp+1);
strncpy(tmp_host,tmp,itmp);
tmp_host[itmp]='\0';
if((tmp2=strrchr(tmp_host,':'))!=NULL){
*tmp2='\0';
ObjFile->nPort=atoi(tmp2+1);
}
0015get.c‚±‚±‚Ü‚Å
NGNGstrcpy(ObjFile->Host,tmp_host);
tmp=strchr(tmp,'/');
if(tmp[strlen(tmp)-1]=='/') strcat(tmp,"index.html");
strcpy(ObjFile->FPath,tmp);
tmp2=strrchr(tmp,'/')+1;
strcpy(ObjFile->FName,tmp2);
return SUCCESS;
}
int mstderr(int t,struct ObjectFile *ObjFile){
switch(t){
case ERR_URL : printf("ERROR:•s“K�Ø‚ÈURL [%s]\n",ObjFile->url); break;
case ERR_HOST : printf("ERROR:•s“K�؂ȃzƒXƒg–¼ [%s]\n",ObjFile->Host); break;
case ERR_SOCKET : printf("ERROR:Socket for server failed.\n"); break;
case ERR_CONNECT : printf("ERROR:Connect failed.\n"); break;
case ERR_FDOPEN : printf("ERROR:Can't fdopen.\n"); break;
case ERR_FOPEN : printf("ERROR:Can't fopen.\n"); break;
}
return(FAILED);
}
void mstddebug(struct ObjectFile *ObjFile){
printf("URL\t\t:\t%s\n",ObjFile->url);
printf("hostname\t:\t%s\n",ObjFile->Host);
printf("port_num\t:\t%d\n",ObjFile->nPort);
printf("path\t\t:\t%s\n",ObjFile->FPath);
}
0016token.c‚±‚±‚©‚ç
NGNG#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUF_LEN2 32768
#define TAGNAMESIZE 256
#define NELEMS(x) (sizeof(x)/sizeof(x[0]))
#define DEF_NSC 10
#include "token.h"
#include "vscript.h"
enum KINDDOC {TAG,BEGINTAG,ENDTAG,DOC,COMMENT};
enum {OFF,ON};
enum { HTML,HEAD,TITLE,BODY,BR,CENTER,HR };
enum TAGTYPE {NEEDEND,NONEND};
typedef struct MODESTACK MODESTACK;
struct MODESTACK{
int align;
MODESTACK *prev;
}*mstack_top=NULL;
typedef struct TAGSTACK TAGSTACK;
struct TAGSTACK{
int tagid;
MODESTACK *mstack;
TAGSTACK *prev;
}*tstack_top=NULL;
0017ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNGint nstack=0;
int maxstack=0;
struct TAGTABLE{
char name[TAGNAMESIZE];
unsigned char type;
int bvss[5];
int evss[5];
}tagtable[]={
{"html" ,NEEDEND, {NON}, {NON} },
{"head" ,NEEDEND, {NON}, {NON} },
{"meta" ,NONEND, {NON}, {NON} },
{"title" ,NEEDEND, {NON}, {NON} },
{"body" ,NEEDEND, {VABLE,NON}, {VENABLE,NON} },
{"br" ,NONEND, {NEWLINE,NON}, {NON} },
{"center" ,NEEDEND, {ACENTER,NEWLINE,NON}, {NEWLINE,NON} },
{"hr" ,NONEND, {NEWLINE,DLINE,NEWLINE,NON}, {NON} },
{"blockquote" ,NEEDEND, {NON}, {NON} },
{"img" ,NONEND, {NON}, {NON} },
{"a" ,NEEDEND, {TBCOLOR,BUL,NON}, {TECOLOR,EUL,NON} },
{"h1" ,NEEDEND, {NEWLINE,NON}, {NEWLINE,NON} },
{"h2" ,NEEDEND, {NEWLINE,NON}, {NEWLINE,NON} },
{"h3" ,NEEDEND, {NEWLINE,NON}, {NEWLINE,NON} },
{"h4" ,NEEDEND, {NEWLINE,NON}, {NEWLINE,NON} },
{"h5" ,NEEDEND, {NEWLINE,NON}, {NEWLINE,NON} },
{"h6" ,NEEDEND, {NEWLINE,NON}, {NEWLINE,NON} },
{"font" ,NEEDEND, {NON}, {NON} },
{"pre" ,NEEDEND, {NON}, {NON} }
};
0018ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNGchar data[BUF_LEN2];
struct VSCRIPTS tmp_scr={NULL,0,0,NULL,0,0};
void readdata(char *fname){
int i;
char tmpbuf[BUF_LEN2],tmpbuf2[BUF_LEN2];
unsigned char fspace=OFF;
FILE *fp;
memset(data,'\0',BUF_LEN2);
fp=fopen(fname,"r");
while(fgets(tmpbuf2,BUF_LEN2,fp)!=NULL){
nkfsub("s",tmpbuf2,tmpbuf);
for(i=0;i<strlen(tmpbuf);i++){
if(tmpbuf[i]!='\t' && tmpbuf[i]!='\r' && tmpbuf[i]!='\n'){
if(tmpbuf[i]==' '){
if(fspace) continue;
fspace=ON;
}else if(fspace) fspace=OFF;
sprintf(data,"%s%c",data,tmpbuf[i]);
}
}
}
fclose(fp);
}
0019ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNGchar *l2u(char *src,char *tmp){
int i;
for(i=0;src[i]!='\0';i++){
if((src[i]>='a') && (src[i]<='z')){
tmp[i]=src[i] - 0x20;
}else tmp[i]=src[i];
}
return(tmp);
}
int addscript(int tss){
int *tmpip;
if(tmp_scr.vscripts==NULL){
if((tmp_scr.vscripts=(int *)malloc(sizeof(int)*DEF_NSC))==NULL){
fprintf(stderr,"err-test\n");
return 0;
}else tmp_scr.maxscripts=DEF_NSC;
}else if((tmp_scr.maxscripts-tmp_scr.nscripts)==0){
tmpip=(int *)realloc(tmp_scr.vscripts,sizeof(int)*tmp_scr.maxscripts*2);
if(tmpip!=NULL){
tmp_scr.vscripts=tmpip;
tmp_scr.maxscripts*=2;
}else{
fprintf(stderr,"err-test\n");
return 0;
}
}
tmp_scr.vscripts[tmp_scr.nscripts]=tss;
tmp_scr.nscripts++;
0020ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNGreturn(1);
}
void mstack_pop(){
MODESTACK *tmpmnode;
if(mstack_top==NULL){
fprintf(stderr,"mstack is empty\n");
}else{
tmpmnode=mstack_top;
mstack_top=mstack_top->prev;
free(tmpmnode);
}
}
MODESTACK *mstack_push(){
int j;
MODESTACK *newmnode;
if((newmnode=(MODESTACK *)malloc(sizeof(MODESTACK)))==NULL) return(NULL);
if(mstack_top==NULL) newmnode->prev=NULL;
else newmnode->prev=mstack_top;
mstack_top=newmnode;
return(newmnode);
}
int tstack_pop(){
int i;
TAGSTACK *tmptnode;
0021ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNGif(nstack==0){
fprintf(stderr,"tstack is empty\n");
}else{
if(tstack_top[nstack-1].mstack!=NULL) mstack_pop();
if(tstack_top[nstack-1].tagid<NELEMS(tagtable)){
fprintf(stderr,"tpop :%s\n",tagtable[tstack_top[nstack-1].tagid].name);
for(i=0;tagtable[tstack_top[nstack-1].tagid].evss[i]!=NON;i++){
if(addscript(tagtable[tstack_top[nstack-1].tagid].evss[i])==0){
fprintf(stderr,"test1\n");
return(0);
}
}
}else fprintf(stderr,"tpop \n");
nstack--;
}
}
int tstack_push(int id){
int j;
MODESTACK *newmnode;
TAGSTACK *tmptp;
if(tstack_top==NULL){
if((tstack_top=(TAGSTACK *)malloc(sizeof(TAGSTACK)*DEF_NSC))==NULL){
fprintf(stderr,"err-test\n");
return 0;
}else maxstack=DEF_NSC;
}else if((maxstack-nstack)==0){
tmptp=(TAGSTACK *)realloc(tstack_top,sizeof(TAGSTACK)*maxstack*2);
if(tmptp!=NULL){
0022ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNGtstack_top=tmptp;
maxstack*=2;
}else{
fprintf(stderr,"err-test\n");
return 0;
}
}
tstack_top[nstack].tagid=id;
for(j=0;tagtable[id].bvss[j]!=NON;j++){
if(addscript(tagtable[id].bvss[j])==0){
fprintf(stderr,"test1\n");
return(0);
}
if(tagtable[id].bvss[j]>=ALEFT && tagtable[id].bvss[j]<=ARIGHT){
if((newmnode=mstack_push())==NULL){
fprintf(stderr,"test2\n");
return(0);
}else tstack_top[nstack].mstack=newmnode;
}else tstack_top[nstack].mstack=NULL;
}
if(tagtable[id].bvss[0]==NON) tstack_top[nstack].mstack=NULL;
if(id<NELEMS(tagtable)) fprintf(stderr,"tpush:%s ",tagtable[id].name);
else fprintf(stderr,"tpush ");
nstack++;
return(1);
}
struct VSCRIPTS *tokenMain(){
char *tmp,*tmp2,buffer[BUF_LEN2],**tmpcpp;
unsigned char mode=TAG,fcomment=OFF;
0023ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNGint k;
memset(buffer,'\0',BUF_LEN2);
for(tmp=data;*tmp!='\0';tmp++){
switch(*tmp){
case '<':
if(!strncmp(tmp,"<!--",4))
fcomment=ON;
if(strlen(buffer)>0){
if(addscript(DOCT)==0) return(NULL);
if(tmp_scr.maxdocs==0){
if((tmp_scr.doctable=(char **)malloc(sizeof(char *)*DEF_NSC))==NULL){
fprintf(stderr,"err-test\n");
return 0;
}else tmp_scr.maxdocs=DEF_NSC;
}else if((tmp_scr.maxdocs-tmp_scr.ndocs)==0){
tmpcpp=(char **)realloc(tmp_scr.doctable,sizeof(char *)*tmp_scr.maxdocs*2);
if(tmpcpp!=NULL){
tmp_scr.doctable=tmpcpp;
tmp_scr.maxdocs*=2;
}else{
fprintf(stderr,"err-test\n");
return 0;
}
}
if(addscript(tmp_scr.ndocs)==0) return(NULL);
tmp_scr.doctable[tmp_scr.ndocs]=strdup(buffer);
tmp_scr.ndocs++;
}
memset(buffer,'\0',BUF_LEN2);
0024ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNGmode=TAG;
break;
case '>':
{
int i,j=0;
char buffer2[TAGNAMESIZE];
if(buffer[0]=='/'){
mode=ENDTAG;
j=1;
}else mode=BEGINTAG;
for(i=0;i<NELEMS(tagtable);i++){
if((!strncmp(tagtable[i].name,buffer+j,strlen(tagtable[i].name)))
|| (!strncmp(l2u(tagtable[i].name,buffer2),buffer+j,strlen(tagtable[i].name)))){
break;
}
}
if(fcomment) mode=COMMENT;
if(i<NELEMS(tagtable)){
if(mode==ENDTAG) tstack_pop();
else if(mode==BEGINTAG){
if(tagtable[i].type==NEEDEND){
if(!tstack_push(i)){
fprintf(stderr,"err\n");
return(NULL);
}
fprintf(stderr,"%s\n",buffer);
}else{
for(j=0;tagtable[i].bvss[j]!=NON;j++){
0025ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNGif(addscript(tagtable[i].bvss[j])==0) return(NULL);
}
}
}
}
}
memset(buffer,'\0',BUF_LEN2);
mode=DOC;
fcomment=OFF;
/* ƒ^ƒO–{‘̂ƃIƒvƒVƒ‡ƒ“‚Ì�Ø‚è�o‚µ */
break;
default :
if(fcomment){
char *tmp3;
for(tmp2=tmp,tmp3=strchr(tmp2,'>');;tmp3=strchr(tmp2,'>')){
if(!strncmp(tmp3-2,"-->",3)){
strncpy(buffer,tmp,tmp3-tmp);
tmp=tmp3-1;
break;
}else
tmp2=tmp3+1;
}
}else{
memset(buffer,'\0',BUF_LEN2);
if(mode!=DOC)
tmp2=strchr(tmp,'>');
else
tmp2=strchr(tmp,'<');
0026token.c‚±‚±‚Ü‚Å
NGNGstrncpy(buffer,tmp,tmp2-tmp);
tmp=tmp2-1;
}
}
}
return(&tmp_scr);
}
0027token.h
NGNGtypedef struct TAGVAL TAGVAL;
struct TAGVAL{
int ntag;
char *tmp;
};
struct VSCRIPTS{
int *vscripts;
int nscripts;
int maxscripts;
char **doctable;
int ndocs;
int maxdocs;
};
void readdata(char *);
struct VSCRIPTS *tokenMain();
0028viwer.c‚±‚±‚©‚ç
NGNG#include <ncurses.h>
#include <sys/types.h>
#include <time.h>
#include "token.h"
#include "viewer.h"
#include "vscript.h"
enum {BEGIN,END};
enum {OFF,ON};
int fbline();
int fwrline();
unsigned char writable=OFF;
int writex=0,writey=0;
unsigned char align=ALEFT;
WINDOW *stdscr;
int viwerMain(struct VSCRIPTS *vscripts){
int i,j,nline,c,x=0,y=0;
for(i=0;i<vscripts->nscripts;i++){
switch(vscripts->vscripts[i]){
case VABLE:
writable=ON;
for(j=i+1,nline=0;j<vscripts->nscripts;j++){
if(vscripts->vscripts[j]==NEWLINE) break;
0029ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNGif(vscripts->vscripts[j]==DOCT){
nline+=strlen(vscripts->doctable[vscripts->vscripts[i+1]]);
j++;
}
}
break;
case NEWLINE:
fbline();
for(j=i+1,nline=0;j<vscripts->nscripts;j++){
if(vscripts->vscripts[j]==NEWLINE) break;
if(vscripts->vscripts[j]==DOCT){
nline+=strlen(vscripts->doctable[vscripts->vscripts[j+1]]);
j++;
}
}
if(align==ALEFT) writex=0;
else if(align==ACENTER){
if(nline>COLS){
}else{
writex=(COLS-nline)/2;
}
}
break;
case ALEFT:
align=ALEFT;
break;
case ACENTER:
align=ACENTER;
break;
0030ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNGcase ARIGHT:
align=ARIGHT;
break;
case TBCOLOR:
attron(COLOR_PAIR(1));
break;
case TECOLOR:
attroff(COLOR_PAIR(1));
break;
case BUL:
attron(A_UNDERLINE);
break;
case EUL:
attroff(A_UNDERLINE);
break;
case DOCT:
if(writable==ON){
mvwaddstr(stdscr,writey,writex,vscripts->doctable[vscripts->vscripts[i+1]]);
writex+=strlen(vscripts->doctable[vscripts->vscripts[i+1]]);
}
i++;
break;
case DLINE:
fwrline();
break;
default :
}
if(writey==LINES-1) break;
}
0031ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNGwrefresh(stdscr);
keypad(stdscr,TRUE);
wtimeout(stdscr,10);
while(c!='q'){
move(y,x);
c=wgetch(stdscr);
switch(c){
case KEY_UP :
if(y-1>=0) y--;
break;
case KEY_DOWN :
if(y<(LINES-1)) y++;
break;
case KEY_LEFT :
if(x-1>=0) x--;
break;
case KEY_RIGHT :
if(x<(COLS-1)) x++;
break;
default :
}
}
return(EXIT);
}
void viewerInit(){
/*setenv("TERM","kterm-color",1);*/
initscr();
start_color();
noecho();
0032viwer.c‚±‚±‚Ü‚Å
NGNGcbreak();
stdscr = newwin(LINES,COLS,0,0);
init_pair(1,COLOR_CYAN,COLOR_BLACK);
scrollok(stdscr, TRUE);
}
void viewerExit(){
endwin();
}
int fwrline(){
wmove(stdscr,writey,0);
whline(stdscr,'-',COLS);
return(0);
}
int fbline(){
writey++;
return(0);
}
0033viwer.h
NGNGenum {EXIT};
int viewerMain(struct VSCRIPTS *);
void viewerExit();
void viewerInit();
0034vscript.h
NGNG#if !defined(VSCRIPT)
#define VSCRIPT
enum {NON=-1}; /* ”ÔŒ¢ */
enum {VABLE,VENABLE}; /* ƒhƒLƒ…ƒ�ƒ“ƒg•\ަ‚Ì—LŒø‰»�E–³Œø‰» */
enum {CCABLE=2,CCENABLE}; /* �§Œä•¶Žš‚Ì—LŒø‰»�E–³Œø‰» */
enum {NEWLINE=4}; /* ‰ü�s */
enum {ALEFT=5,ACENTER,ARIGHT}; /* •\ަˆÊ’u‚Ì•Ï�X */
enum {TBCOLOR=8,TECOLOR}; /* �F•t‚¯ */
enum {BUL=10,EUL}; /* ƒAƒ“ƒ_�[ƒ‰ƒCƒ“ŠJŽn�I—¹ */
enum {DOCT=12}; /* ƒhƒLƒ…ƒ�ƒ“ƒgƒe�[ƒuƒ‹‚ÌŽQ�Æ */
enum {DLINE=13}; /* Œr�ü‚ðˆø‚ */
#endif
0035nkf.c
NGNG�«
ttp://www2k.biglobe.ne.jp/~motoi/nkfsub.c
0036Makefile
NGNGTARGET = bokashi
OBJS = token.o get.o viewer.o nkf.o main.o
LIB = -lncurses -ltermcap -lwsock32
all: $(TARGET)
$(TARGET):$(OBJS)
$(CC) -o $@ $(OBJS) $(LIB)
%.o:%.c
$(CC) -c $< -o $@
clean :
rm -f *.o *.exe
0037ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG‚à‚¤�“‚¢‚ ‚肳‚Ü‚¾
‚ ‚Æ‚Í1‚ª‚Ç‚¤‚É‚©‚·‚é‚©‚à�CŒî‚¤ŒäŠú‘Ò�I�I
ƒIƒ‰ƒn�ÀƒbƒeƒNƒ‹ƒ_�D�D�D
0038ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNGsine
0039‰c”_·ÞºMC �ŸcJTGtEIXl.
NGNG0040ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG0041ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG0042ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG0043ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNGcccccccccccc
�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�^��S��R.
�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@ �@�^�@�@�@˜¦�@ ..�S
�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�^�@�@ �B �l�@�@�@ �j
�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�i�B...�B_ .ƒm �B�S�B...˜¦
�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@ �@(�@_�@. �@.. �@�@ )
�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@/�@�@�@�@ �@ �@/
�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@ �@/�@ƒm ‚µ�@�@�@/
�@�@�@�@ ŽO�P�P�P�P�_�@�@�@�@/�@�j�@‚Æ�@ �@/
�@�@�@�@�@/�@�@�Q�Q�Q�Q|�@.�@ /�@�@�@�@�@�@/
�@�@�@�@ /�@�@�„�@�@�@�@�@|�@�@ /�@�@�@ �@�@/
�@�@�@�@/�@�@/�@�Ü�@�@�Ü |�@�@/�@�@�@�@�@/
�@�@�@�@|�Q/---(�E)--(�E) |�@ /�@ �@�@�@/
�@�@�@�@|�@(6�@�@�@�@‚Â�@ �b /�@ ..�@�@/�@�^ ‚Ç‚¤‚â‚ç�P�P�P�P�P�P�P�P�P
�@ �@ �@|�@�@�@�@�Q�Q�Q �b/�@ �@.�@/�@�@�ƒ‰´‚Í‘��B‚·‚é‚炵‚¢�I�I�I�I�I�I�I
�@�@�@�@�_�@�@�_�Q/�@�^�@/�@�@�@/�@�@�@�@�_�Q�Q�Q�Q�Q�Q�Q�Q�Q
�@ƒVƒR�@�@�_�Q�Q_�^�@�@ /�@�@�@/
�@�@�@�@�@�@/�@�@�@�@ �_�@/ .�@�@/
�@ƒVƒR�@�@�i�@�j�@ß�@ß/�_�T ˜¦.../
�@�@�@�@�@�@�_ �R¤ �i�@ / �@�¼//
�@�@�@�@�@�@�@ �_�@�R /�@�¼//
�@�@�@�@�@�@�@ �i�@�_‚Â�@�@/
�@�@�@�@�@�@�@�@|�@ |‚n�›ƒm �_
�@�@�@�@�@�@�@�@|�@ |�@�@�@�@�_ �_
�@�@�@�@�@�@�@�@|�@ �j�@�@�@�@�@|�@ �j
�@�@�@�@�@�@�@ /�@/�@�@ �@�@ /�@/
�@�@�@�@�@�@ /�@/�@�@ �@ �@ �¾
�@�@�@�@�@�@ �¾
0044ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG0045ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG„¢(ß�`ß)„¡ÔÚÔÚ
0046ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG�E‘¼ƒuƒ‰ƒEƒU‚Ńy�[ƒW�^ƒŠƒ“ƒN�æ‚ð•\ަ‚·‚邱‚Æ‚ª‰Â”\
�E‘¼ƒ\ƒtƒg‚Ńy�[ƒW�ã�^ƒŠƒ“ƒN�æ‚̉摜‚≹Šy‚Ȃǂð�Ä�¶‰Â”\
�Eƒe�[ƒuƒ‹•\ަ�^ƒtƒŒ�[ƒ€•\ަ‚ª‰Â”\
�Eƒy�[ƒW“Ç‚Ý�ž‚Ý’†‚ÌŽb’è•\ަ‚ª‰Â”\
�@ƒe�[ƒuƒ‹•`‰æ‚ª—�‚Þ�ê�‡‚Í�Ý’è‚ÅŽb’è•\ަ‚©Š®‘S•\ަ‚©‘I‘ð
�EƒuƒbƒNƒ}�[ƒN‚ɑΉž
�EIE‚̃uƒbƒNƒ}�[ƒN‚ɑΉž
�EŽÀ‚̓^ƒuƒuƒ‰ƒEƒU�iCtrl+1,2,3 ...‚Ń^ƒu�Ø‚è‘Ö‚¦‚Æ‚©�j
�Evim‚Ý‚½‚�c•ªŠ„�^‰¡•ªŠ„‚ª‰Â”\
�EŒŸ�õƒc�[ƒ‹•t‚«�iF3‚ÅŒŸ�õƒL�[‚ƃJƒXƒ^ƒ}ƒCƒY‰Â”\‚ÈŒŸ�õƒGƒ“ƒWƒ“
�@ˆê——‚ª�o‚Ä‚«‚ÄŒŸ�õ‚·‚邯Œ‹‰Ê‚ð•ʃ^ƒu•\ަ‚Æ‚©�j
�Ecookie‚ɑΉž
�Essl‚ɑΉž
�EJavaScript‘Ήž�iƒCƒxƒ“ƒg‚Íonclick‚Æ‚©‚¾‚¯‚Æ‚©�j
‚Ü‚ �Å’áŒÀ‚±‚Ì‚‚ç‚¢‚Ì‹@”\‚Í—~‚µ‚¢‚È�i‚—
0047ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNGƒ}ƒXƒI�~—Õ’†�I�I�I�I�I�I�I�I�I�I�I�I�I�I�I�I�I�I�I�I�I�I�I�I�I�I�I�I�I�I
�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�^��S��R.
�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@ �@�^�@�@�@˜¦�@ ..�S
�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�^�@�@ �B �l�@�@�@ �j
�@�@�@�@�@�@�@�@�@�@�@�@�@�@@�@�@�@�i�B...�B_ .ƒm �B�S�B...˜¦
�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@ �@(�@_�@. �@.. �@�@ )
�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@/�@�@�@�@ �@ �@/
�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@ �@/�@ƒm ‚µ�@�@�@/
�@�@�@�@ ŽO�P�P�P�P�_�@�@�@�@/�@�j�@‚Æ�@ �@/
�@�@�@�@�@/�@�@�Q�Q�Q�Q|�@.�@ /�@�@�@�@�@�@/
�@�@�@�@ /�@�@�„�@�@�@�@�@|�@�@ /�@�@�@ �@�@/
�@�@�@�@/�@�@/�@�Ü�@�@�Ü |�@�@/�@�@�@�@�@/
�@�@�@�@|�Q/---(�E)--(�E) |�@ /�@ �@�@�@/
�@�@�@�@|�@(6�@�@�@�@‚Â�@ �b /�@ ..�@�@/�@�^ ‚Ç‚¤‚â‚ç�I�I�I�I�I�I�I�I�I�I
�@ �@ �@|�@�@�@�@�Q�Q�Q �b/�@ �@.�@/�@�@�ƒ‰´‚Í‘��B‚·‚é‚炵‚¢�I�I�I�I�I�I�I
�@�@�@�@�_�@�@�_�Q/�@�^�@/�@�@�@/�@�@�@�@�_�Q�Q�Q�Q�Q�Q�Q�Q�Q
�@ƒVƒR�@�@�_�Q�Q_�^�@�@ /�@�@�@/
�@�@�@�@�@�@/�@�@�@�@ �_�@/ .�@�@/
�@ƒVƒR�@�@�i�@�j�@ß�@ß/�_�T ˜¦.../
�@�@�@�@�@�@�_ �R¤ �i�@ / �@�¼//
�@�@�@�@�@�@�@ �_�@�R /�@�¼//
�@�@�@�@�@�@�@ �i�@�_‚Â�@�@/
�@�@�@�@�@�@�@�@|�@ |‚n�›ƒm �_
�@�@�@�@�@�@�@�@|�@ |�@�@�@�@�_ �_
�@�@�@�@�@�@�@�@|�@ �j�@�@�@�@�@|�@ �j
�@�@�@�@�@�@�@ /�@/�@�@ �@�@ /�@/
�@�@�@�@�@�@ /�@/�@�@ �@ �@ �¾
�@�@�@�@�@�@ �¾
>>1>>2>>3>>4>>5>>6>>7>>8>>9>>10>>11
0048ŽR�è�Â
NGNG�@�@�i�@�@�O�O �j�ƒ ‚Ê‚é‚Û�i�O�O�j
0050ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG0051ŽR�è�Â
NGNGËß.°�@(�@�@�O�O �j �ƒ‚±‚ê‚©‚ç‚à–l‚ð‰ž‰‡‚µ‚ĉº‚³‚¢‚Ë�i�O�O�j�B
�@�@���k~�¾�P�P�l
�@�@�� ���\�\�� �@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@ŽR�è�Â
0052ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG�V�Emac”‚ÅApple‚©‚ç�V‚µ‚�o‚½ƒuƒ‰ƒEƒUSafari‚ðŒ@‚艺‚°‚Ä‚¢‚Ü‚·�B
‚Ü‚¾�Ý’è‚Å‚«‚é�€–Ú‚à�‚È‚�A•W�€“I‚È‹@”\‚ªŒ‡”@‚µ‚Ä‚¢‚½‚肵‚Ä‚¢‚Ü‚·‚ª
ƒ^ƒu‚ɑΉž‚µ‚Ä‚¢‚½‚è�AGoogle‚ÌŒŸ�õ‹@”\‚ª•W�€‘•”õ‚³‚ê‚Ä‚¢‚½‚è‚Æ
‚߂ڂµ‚¢‹@”\‚ª�·‚è�ž‚Ü‚ê‚Ä‚ ‚è�A�¡”N�o‚½‚΂©‚è‚̃\ƒtƒg‚Ì‹‚݂Ƃ¢‚¤‚©
�«—ˆ�«‚ðŠ´‚¶‚³‚¹‚Ä‚‚ê‚Ü‚·�B
ƒI�[ƒvƒ“ƒ\�[ƒX‚Å–¢‚¾Beta”łȂ̂ł±‚ê‚©‚ç‚Ç‚¤‚Ȃ邩Šy‚µ‚݂ł·�B
‚æ‚낵‚¯‚ê‚΃vƒ�ƒOƒ‰ƒ€”‚Ì�Z�l‚³‚ñ‚É‚àˆÓŒ©‚ð‚¢‚½‚¾‚«‚½‚¢‚Å‚·�B
--ƒRƒsƒy‚ð‚¨‹–‚µ‚ð--
0053ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG0054ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG0055ŽR�è �Â
NGNG�@__�È�Q�È_
�@|�i�@�@�O�O �j|�@�ƒ�Q‚é‚Û�i�O�O�j
�@|�_����_
�@�_ |�Ü�Ü�Ü~|�@�@�@�@�@�@�@�@�@ŽR�è�Â
�@�@ ~�P�P�P�P
0056ŽR�è �Â
NGNG0057ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG'/* WININET�‰Šú‰» */
hInternet = InternetOpen( _
"WININET Sample Program", _
INTERNET_OPEN_TYPE_DIRECT, _
vbNullString, _
vbNullString, _
0)
'/* ƒT�[ƒo‚Ö�Ú‘± */
hHttpSession = InternetConnect( _
hInternet, _
"www.yahoo.com", _
UrlComponents.nPort, _
vbNullString, _
vbNullString, _
INTERNET_SERVICE_HTTP, _
0, _
0)
'/* HTTP—v‹�‚Ì�ì�¬ */
hHttpRequest = HttpOpenRequest( _
hHttpSession, _
"GET", _
"index.html", _
"HTTP/1.0", _
"http://www.yahoo.com/", _
vbNullString, _
0, _
0)
0058ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG'/* �ì�¬‚µ‚½HTTP—v‹�‚Ì”�s */
hHttpRequest = HttpSendRequest( _
hHttpRequest, _
vbNullString, _
0, _
vbNullString, _
0)
'/* ƒRƒ“ƒeƒ“ƒc‚Ì“à—e‚ðŽæ“¾�E•\ަ */
Text1.Text = InternetReadFile( _
hHttpRequest, _
Buf, _
BufSize, _
0)
'/* Œã�ˆ—�
Call InternetCloseHandle(hHttpRequest)
Call InternetCloseHandle(hHttpSession)
Call InternetCloseHandle(hInternet)
0059ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG'/* WININET�‰Šú‰» */
hInternet = InternetOpen( _
"WININET Sample Program", _
INTERNET_OPEN_TYPE_PRECONFIG, _
vbNullString, _
vbNullString, _
0)
'/* ƒT�[ƒo‚Ö�Ú‘± */
hHttpSession = InternetConnect( _
hInternet, _
"www.yahoo.com", _
INTERNET_DEFAULT_HTTP_PORT, _
vbNullString, _
vbNullString, _
INTERNET_SERVICE_HTTP, _
0, _
0)
‚Å‚¨Šè‚¢‚µ‚Ü‚·‚Å‚·
‚í‚´‚í‚´‚ ‚肪‚Æ‚¤�ô
0060ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNGwinInet‚Ì�‰Šú‰»(ƒCƒ“ƒ^�[ƒlƒbƒgƒnƒ“ƒhƒ‹‚̎擾)
�@�@�@�@�@�@�@�«
Žæ“¾‚µ‚½ƒCƒ“ƒ^�[ƒlƒbƒgƒnƒ“ƒhƒ‹‚ðŽg‚Á‚Ä
ƒT�[ƒo‚Ö�Ú‘±(InternetConnect)
HttpƒZƒbƒVƒ‡ƒ“‚ðŠJ‚¢‚ănƒ“ƒhƒ‹Žæ“¾
�@�@�@�@�@�@�@�«
InternetConnect‚Ŏ擾‚µ‚½ƒnƒ“ƒhƒ‹‚ðŽg‚Á‚Ä
HTTPƒŠƒNƒGƒXƒg‚̃nƒ“ƒhƒ‹‚ðŽæ“¾(HttpRequest)
�@�@�@�@�@�@�@�«
ƒŠƒNƒGƒXƒgƒnƒ“ƒhƒ‹Žg‚Á‚ÄƒŠƒNƒGƒXƒg‚Ì‘—�M�B
�@�@�@�@�@�@�@�«
ƒT�[ƒo‚©‚çƒf�[ƒ^Žæ“¾
‚Å�A‚ ‚Á‚Ä‚é‚Ì‚©‚È�H
0061ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG'/* �ì�¬‚µ‚½HTTP—v‹�‚Ì”�s */
hHttpRequest = HttpSendRequest( _
hHttpRequest, _
vbNullString, _
0, _
vbNullString, _
0)
‚Ì‘æˆêˆø�”‚ÌhHttpRequest‚Í‚±‚ÌŽž“_‚ł͉½‚à‚Í‚¢‚Á‚ĂȂ¢‚ñ‚¶‚á‚È‚¢�H
‚±‚±‚É“ü‚ê‚é‚Ì‚ÍInternetConnect()ŠÖ�”‚Ŏ擾‚µ‚½ƒnƒ“ƒhƒ‹‚¶‚á‚È‚¢‚©‚È�H
0062ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG‚Æ‚è‚ ‚¦‚¸�¡‚©‚ç“Ç‚ñ‚Ń^ƒ�‚µ‚Ă݂܂·�I
0063ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG“ǂ݂܂µ‚½�A‚»‚¤‚Å‚·‚Ë�B‰´‚Ì“ª‚Ì’†‚É‚ ‚é‚̂͂»‚ê‚Å‚·�B
‚Å�A‰½ŒÌ‚©ƒŠƒNƒGƒXƒg‚ŃGƒ‰�[‚ª�o‚é�iEmpty‚̕ԋp�j‚Á‚ÄŽ–‚Å‚·
0064ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNGHttpOpenRequest‚̃pƒ‰ƒ��[ƒ‰�[‚ð‚¿‚å‚‚¿‚å‚•Ï‚¦‚Ä‚é‚ñ‚Å‚·‚¯‚Ç‚¢‚©‚ñ‚¹‚ñ‚¤‚Ü‚‚¢‚©‚È‚‚Ä
0065ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG�ª‚±‚±‚ÉŒ³‚̃\�[ƒX‚ª‚ ‚è‚Ü‚·
>>61
”�s•”•ª‚Å‚·‚©�B‚»‚¤‚Å‚·‚ËhHttpRequest‚É‚ÍEmpty‚ª•Ô‚Á‚Ä‚‚é‚̂ŋó‚Å‚·
‚Å�A‚–‚‚‚Í‚»‚±‚ÅŽ~‚܂邩‚ç‹C‚É‚µ‚È‚¢‚Å‚¢‚Ü‚µ‚½�B�¡‚¿‚å‚Á‚ÆŽŽ‚µ‚Ă݂܂·
0066ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG‚¤‚¡�A‚Æ‚è‚ ‚¦‚¸ŽŽ‚µ‚Ă݂Ă‚ê‚¡
‚¤‚£‚£‚Þ�E�E�E�EVB—Ž‚Æ‚µ‚Ä‚�E�E�E(ÓºÞÓºÞÓºÞ
0067ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG>>65
‚ÅŒ¾‚Á‚½’ʂ肖‚‚‚¾‚Æ‚»‚±‚ÅŽ~‚Ü‚Á‚Ä‚µ‚Ü‚¢‚Ü‚µ‚½�B
‚Ç‚¤‚â‚ç‚–‚‚‚ÍhHttpRequest‚ª‹ó‚Ȃ̂ª‹–‚¹‚È‚¢‚Ì‚©HttpOpenRequest‚Ì�錾‚ª‹C‚É‚‚í‚È‚¢‚Ý‚½‚¢‚Å‚·�B
‚¿‚Ȃ݂ɖl‚Í‘æˆêˆø�”‚Í‚»‚ÌŠÖ�”‚ªŽg‚¤ˆø�”‚¾‚ƉðŽß‚µ‚Ä‚é‚ñ‚Å‚·‚¯‚LjႢ‚Ü‚·‚©‚Ë�H
‚–‚‚‚͉´‚à�E�E�Eƒ‚ƒSƒ‚ƒS
‚¦‚ÆŽ©�̂ւÁ‚Û‚±‚³‚ñ‚ÌŠJ”Œ¾Œê‚͂Ȃñ‚Å‚·‚©�H
0068ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG‚ñ�[�A‚»‚¤‚¾‚Ë‚¡�B
HttpSendRequest()ŠÖ�”‚Ì‘æˆêˆø�”‚Í�AHTTP—v‹�‚ð�o‚·�Û‚ÉŽg—p‚·‚é’l‚ð“ü‚ê‚é‚ׂ«‚¾‚Ë‚¡�B
hHttpRequest = HttpSendRequest( _
hHttpRequest, _
vbNullString, _
0, _
vbNullString, _
0)
‚±‚̃\�[ƒX�ê�‡�AHttpSendRequest‚É“n‚µ‚Ä‚¢‚鑿ˆêˆø�”‚ÍhHttpRequest,�B
‚µ‚©‚µ�AHttpSendRequest‚̕Ԃè’l‚ªŠi”[‚³‚ê‚é‚Ì‚àhHttpRequest�B
‚‚܂èhHttpRequest‚ªˆø�”‚Æ‚µ‚Ä“n‚³‚ê‚鎞“_‚Å‚Í�A•Ô‚è’l‚͂Ȃ¢‚킯‚¾‚©‚ç´ÝÌßè‚ɂȂé�B
‚Æ�AŽv‚¤�B
0069ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNGInternetConnect()ŠÖ�”‚ŕԂ³‚ꂽƒCƒ“ƒ^�[ƒlƒbƒg‚Ö‚Ì�Ú‘±‚ðŽ¯•Ê‚·‚éƒnƒ“ƒhƒ‹�B
‚Á‚Ä�‘‚¢‚Ă邩‚ç�A�«‚Ì�ê�‡
http://tokyo.cool.ne.jp/masapico/api_HttpOpenRequest.html
�@�@�@hHttpSession = InternetConnect(
�@�@�@�@�@�@hInternet,
�@�@�@�@�@�@"www.cool.ne.jp",
�@�@�@�@�@�@INTERNET_DEFAULT_HTTP_PORT,
�@�@�@�@�@�@NULL,
�@�@�@�@�@�@NULL,
�@�@�@�@�@�@INTERNET_SERVICE_HTTP,
�@�@�@�@�@�@0,
�@�@�@�@�@�@0);
‚Á‚Ä�‘‚¢‚Ä‚ ‚é‚©‚ç�AInternetConnect()ŠÖ�”‚ŕԂ³‚ꂽƒCƒ“ƒ^�[ƒlƒbƒg‚Ö‚Ì�Ú‘±‚ðŽ¯•Ê‚·‚éƒnƒ“ƒhƒ‹‚Á‚Ä‚¢‚¤‚Ì‚Í
hHttpSession‚ÉŠi”[‚³‚ê‚Ä‚¢‚é�B
‚¾‚©‚ç�AHttpSendRequest‚Ì‘æˆêˆø�”‚ÉhHttpSession‚ð—^‚¦‚Ä‚é‚ñ‚¾‚Æ‚¨‚à‚¤‚æ‚ñ�B
‚ �A‚¿‚Ȃ݂ɉ´‚ªŽg‚Á‚Ă錾Œê‚Í�â–Å�¡‘O‚Ìjava‚Á‚·�E�E�E�E�B
0070ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNGŽŽ‚µ‚É
test00= HttpSendRequest( _
hHttpRequest, _
vbNullString, _
0, _
vbNullString, _
0)
‚Á‚Ä‚â‚Á‚Ă݂½‚ñ‚¾‚¯‚Ç‚â‚Á‚Ï‚èƒGƒ‰�[‚Å‚¿‚á‚¢‚Ü‚µ‚½�B
0071ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNGhHttpSession, _
vbNullString, _
0, _
vbNullString, _
0)
‚¶‚áƒ_ƒ�‚©‚¢�H
0072ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG‚ �AJAVA‚Å‚·‚©�BˆêŽžŠúJAVA‚à‚Ă͂₳‚ꂽ‚̂ɂЂǂ¢‚Á‚·‚æ‚Ë(�L¥ƒÖ¥�M)¼®ÎÞ°Ý
‚¦‚Æ‚–‚‚‚ÍŠî–{“I‚É�ã‚©‚牺‚Ö�‡‚Ƀvƒ�ƒOƒ‰ƒ€‚ª“®‚‚ñ‚Ń‹�[ƒv‚ª–³‚¢ŒÀ‚艺‚̃\�[ƒX‚Ì‚¹‚¢‚Å�ã‚̃Gƒ‰�[‚ª�o‚é‚Á‚ÄŽ–‚Í–³‚¢‚Í‚¸‚È‚ñ‚Å‚·‚æ�iAPI‚Í‚¢‚Ü‚¢‚¿‚í‚©‚ñ‚È‚¢‚Å‚·‚¯‚Ç�j
‚¾‚©‚çHttpOpenRequest‚ŃGƒ‰�[‚ª�o‚Ä‚é‚Á‚ÄŽ–‚Í‚»‚ê‚ðŠÜ‚ß‚½�ã‚łȂñ‚©‚Æ‚ç‚Ô‚Á‚Ä‚é‚Ì‚©‚Æ�B
0073ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG‚ ‚Ÿ�I�I‚²‚ß‚ñ�AƒGƒ‰�[‚ª�o‚Ä‚éŒÂ�Š‚ðŒë‰ð‚µ‚Ä‚½�E�E�E½Ï¿�B
HttpOpenRequest‚©�B
0074ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNGhttp://www.geocities.co.jp/SilkRoad/4511/vb/wininet.htm
‚àŒ©‚Ä‚â‚Á‚Ă܂·
>>71
‚»‚ê‚à‚â‚Á‚Ă݂܂µ‚½�B‚»‚±‚̓Gƒ‰�[�o‚ĂȂ¢‚Å‚·‚Ë�B‚â‚Á‚ÏHttpOpenRequest‚ª‹C‚É“ü‚ç‚È‚¢‚Ý‚½‚¢‚Å‚·
0075ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG‚ �A‚»‚¤‚È‚ñ‚·‚©(�L�E�Í�E`)
‚¢‚¦‚¢‚¦�`�ô
‚Ƃ͂¢‚Á‚Ä‚à‰´‚à‚í‚©‚è‚â‚·‚Œ¾‚¦‚΂悩‚Á‚½‚Å‚·‚Ë�A‚²‚ß‚ñ‚È‚³‚¢
ˆê‰ž�‘‚¢‚Ä‚¨‚‚Æ
HTTP—v‹�‚Ì�ì�¬‚Ì’¼‰º‚Å‚·
0076ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG‚Æ‚è‚ ‚¦‚¸—�—R‚͂킩‚ç‚È‚¢‚¯‚Ǖς¦‚½ƒ\�[ƒX‚ð‘~‚«�o‚µ‚Ä‚¨‚«‚Ü‚·‚Ë
'/* HTTP—v‹�‚Ì�ì�¬ */
hHttpRequest = HttpOpenRequest( _
hHttpSession, _
"GET", _
"index.html", _
"HTTP/1.1", _
"http://www.yahoo.com", _
0, _
0, _
0)
‚Ü‚½‰½‚©‚ ‚Á‚½‚ç‚·‚®�‘‚«�ž‚݂܂·
0077ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG‚¤‚¡�A‚¨‚‹�B
‚¤‚£‚Þ�AInternetOpenUrl�E�E�E‚©�H
“®�ìŠm”F‚µ‚È‚ª‚ç‚¶‚á‚È‚¢‚ƃcƒ‰ƒC‚È(*�L„D�M)ʧʧ
‚æ‚£‚µ�Aƒpƒp—Ž‚µ‚¿‚á(ry
0078‚¶‚å‚¶‚å‚¶‚å �ŸJyo.VSQ2DM
NGNG‚Á‚Ä‚©“®�ìŠÂ‹«‚ª‚È‚¢‚̂͂‚炷‚¬‚Á‚·‚æ(ß„tß)Ͻް
‚Ü‚Ÿ�¡‚©‚ç‚–‚‚‚Á‚Ă̂à‚Ç‚¤‚©‚ÆŽv‚¢‚Ü‚·‚¯‚Ç(�L¥ƒÖ¥�M)¼®ÎÞ°Ý
‚Æ‚è‚ ‚¦‚¸‘¼�l‚ÌAPI‚¶‚áŽd‘g‚Ý‚ª‚í‚©‚ç‚È‚¢‚©‚烊ƒtƒ@ƒŒƒ“ƒX“Ç‚ñ‚Ń�ƒWƒbƒN•”•ªŽ©�삵‚Ă݂܂·
—[•û‚ɂ͂±‚±‚É•ñ��‚Å‚«‚é—\’è�B
‰´‚ÍŽO‘ºƒXƒŒ‚É‚¾‚¢‚½‚¢‚¢‚Ü‚·‚̂łȂɂ©‚ ‚Á‚½‚ç‚»‚Á‚¿‚ɂłà
0079‚¶‚å‚¶‚å‚¶‚å �ŸJyo.VSQ2DM
NGNG‚¦‚Æ�A•ñ��‚Æ‚µ‚Ä‚ÍAPI‚ðŽg‚Á‚½ƒ�ƒWƒbƒN‚Í‚¢‚‚烊ƒtƒ@ƒŒƒ“ƒX’Ê‚è‚É�ì‚Á‚Ä‚àƒGƒ‰�[‚ª�o‚é‚Ì‚Å
‚–‚‚‚̃Rƒ“ƒ|�[ƒlƒ“ƒg‚Å‘ã—p‚µ‚ĂȂñ‚Æ‚©Š®�¬‚³‚¹‚Ü‚µ‚½�B
�iAPI‚Å�¢‚Á‚Ă鎞‚ɃRƒ“ƒ|�[ƒlƒ“ƒg‚ðŒ©‚Â‚¯‚½Žž‚Í‚·‚²‚¢‹~‚í‚ꂽ(ß„tß)�j
‚Æ‚¢‚¤‚±‚Ƃňê��‚ÉŽè“`‚Á‚Ä‚à‚ç‚Á‚Ä‚ ‚肪‚Æ‚¤‚²‚´‚¢‚Ü‚µ‚½�I‚·‚²‚¢�•‚©‚Á‚½‚Å‚·�B
‚ł͂܂½ŽO‘ºƒXƒŒ‚Å�B
0080ŽR�è �Â
NGNG�@�@�@„ �O �O „ �ƒ‚±‚ê‚©‚ç‚à–l‚ð‰ž‰‡‚µ‚ĉº‚³‚¢‚Ë�i�O�O�j�B
�@�@�¼|�@�@�@�@|‚Â
�@�@�@�i�Q�j�i�Q�j�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@ŽR�èƒpƒ“
0081ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG0082’†’ÔÉ�l
NGNG�æ“ú�Aƒ��[ƒ‹ƒT�[ƒoƒeƒXƒg‚Ì‚½‚߂Ƀ��[ƒ‹‚Ì•å�W‚ð‚¢‚½‚µ‚Ü‚µ‚½‚ª�A
‚Ü‚¾‚Ü‚¾‘«‚è‚Ü‚¹‚ñ‚Å‚µ‚½�i‚Q‚O‚O’Ê‚®‚ç‚¢‚µ‚©‚«‚Ü‚¹‚ñ‚Å‚µ‚½‚Ì‚Å�j
‚Å‚·‚Ì‚Å�A�¡‰ñ‚Ü‚½ƒ��[ƒ‹‚Ì•å�W‚ð‚¢‚½‚µ‚Ü‚·�B
‘O‰ñ‚à�‘‚«‚Ü‚µ‚½‚ª�A‘—‚Á‚Ä‚«‚Ä‚¢‚½‚¾‚¢‚½•û‚©‚ç’Š‘I‚Å
”–—ç‚Å‚·‚ª‚µ‚½‚¢‚ÆŽv‚¢‚Ü‚·‚Ì‚Å�A•K‚¸˜A—�‚ÌŽæ‚ê‚éƒAƒhƒŒƒX‚ɂđ—�M‚µ‚Ä‚‚¾‚³‚¢�B
‚»‚ê‚ł͂æ‚낵‚‚¨Šè‚¢‚µ‚Ü‚·�B
’†’ÔÉ�l
[email protected]
0083ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG0084ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG0085ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNGjava‚Æ‚©‘S‘R‚í‚©‚ç‚È‚¢‚ñ‚¾‚¯‚Ç�B
C‚ÌŠJ”ŠÂ‹«‚Í‚ ‚邿�B
0086ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG0087ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG‘f�l‚¶‚á–³—��B
0088ƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ
NGNG�¡ ‚±‚̃XƒŒƒbƒh‚Í‰ß‹Žƒ�ƒO‘qŒÉ‚ÉŠi”[‚³‚ê‚Ä‚¢‚Ü‚·