man.c-Dateireferenz

#include <udp.h>
#include <daemon.h>
#include <udp_language.h>
#include <logging.h>
Include-Abhängigkeitsdiagramm für man.c:

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)

Makro-Dokumentation

#define INETD_INVALID_ACCESS   INTERMUDLOG("INVALID_ACCESS")

Definiert in Zeile 17 der Datei man.c.

#define INVALID_ACCESS ( x   ) 
Wert:
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().

#define MAX_READ_FILE_LEN   50000

Definiert in Zeile 5 der Datei man.c.

Wird benutzt von udp_man().


Dokumentation der Funktionen

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 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Erzeugt am Thu Jun 3 14:42:00 2010 für MorgenGrauen Mudlib von  doxygen 1.6.3