#include <udp.h>#include <daemon.h>#include <udp_language.h>#include <logging.h>
gehe zum Quellcode dieser Datei
Makrodefinitionen | |
| #define | MAX_READ_FILE_LEN 50000 |
| #define | INETD_INVALID_ACCESS INTERMUDLOG("INVALID_ACCESS") |
| #define | INVALID_ACCESS(x) |
Funktionen | |
| void | udp_man (mapping data) |
| string | send_request (string mudname, string pagename) |
| #define INVALID_ACCESS | ( | x | ) |
log_file(INETD_INVALID_ACCESS, \ sprintf(INETD_INV_ACCESS_MSG "TI: %O PO: %O\n", \ ctime()[4..15],this_interactive(), \ previous_object()))
Definiert in Zeile 21 der Datei man.c.
Wird benutzt von udp_man().
| string send_request | ( | string | mudname, | |
| string | pagename | |||
| ) |
Definiert in Zeile 90 der Datei man.c.
Benutzt DATA, INETD, INETD_MAN_REQUESTED, REQUEST und SENDER.
00091 { 00092 return (INETD->_send_udp(mudname, 00093 ([REQUEST: "man", 00094 DATA: pagename, 00095 SENDER: getuid(previous_object())]),1)|| 00096 sprintf(INETD_MAN_REQUESTED,pagename,mudname)); 00097 }
| void udp_man | ( | mapping | data | ) |
Definiert in Zeile 31 der Datei man.c.
Benutzt break_string(), DATA, ID, INETD, INETD_MANPAGE_FOUND, INETD_MANPAGES, INETD_NO_MANPAGE, INVALID_ACCESS, LOCAL_NAME, MAND, MAND_DOCDIR, MAX_READ_FILE_LEN, NAME, pages, RECIPIENT, REPLY, REQUEST und SENDER.
00032 { 00033 mapping pages; 00034 int index; 00035 string manpage,*tmp,ret; 00036 00037 if (previous_object()!=find_object(INETD)) 00038 { 00039 INVALID_ACCESS(Man); 00040 return; 00041 } 00042 00043 manpage=data[DATA]; 00044 tmp=explode(manpage,"/"); 00045 if (sizeof(tmp)>1) 00046 { 00047 if (file_size(MAND_DOCDIR+manpage)>=0) 00048 tmp=({tmp[<1],manpage}); 00049 else 00050 tmp=({}); 00051 } 00052 else 00053 tmp=(string *)call_other(MAND,"locate",data[DATA],0); 00054 pages=([]); 00055 index=sizeof(tmp); 00056 while(index--) 00057 { 00058 if (tmp[1][0..1]!="g.") pages[tmp[index]]=tmp[index-1]; 00059 index--; 00060 } 00061 switch(sizeof(pages)) 00062 { 00063 case 0: 00064 ret=sprintf(INETD_NO_MANPAGE,LOCAL_NAME,manpage); 00065 break; 00066 case 1: 00067 tmp=m_indices(pages)[0]; 00068 ret=sprintf(INETD_MANPAGE_FOUND,LOCAL_NAME,pages[tmp]); 00069 index=0; 00070 while(manpage=read_file(MAND_DOCDIR+tmp,index)) 00071 { 00072 ret+=manpage; 00073 index+=MAX_READ_FILE_LEN; 00074 } 00075 break; 00076 default: 00077 ret=sprintf(INETD_MANPAGES,LOCAL_NAME,"", 00078 break_string(implode(m_values(pages)," "),78),""); 00079 break; 00080 } 00081 INETD->_send_udp(data[NAME], 00082 ([ 00083 REQUEST: REPLY, 00084 RECIPIENT: data[SENDER], 00085 ID: data[ID], 00086 DATA: ret 00087 ])); 00088 }

1.6.3