server/get2fe.cxx File Reference

Udanax bottom-level input routines - front end version. More...

#include <ctype.h>
#include "udanax.h"
#include "players.h"

Include dependency graph for get2fe.cxx:

Include dependency graph

Go to the source code of this file.

Defines

#define WORDELIM   '~'
#define TUMDELIM   '.'
#define SPANFLAG   's'
#define VSPECFLAG   'v'
#define TEXTFLAG   't'

Functions

bool getnum (Session *sess, int *numptr)
 ???

bool gettdigit (Session *sess, int *valueptr)
 ???

bool getspan (Session *sess, typespan *spanptr, typeitemid id)
 ???

bool getvspec (Session *sess, typevspec *vspecptr)
 ???

bool getspanset (Session *sess, typespanset *spansetptr, typeitemid id)
 ???

bool gettext (Session *sess, typetext *textptr)
 ???

bool validrequest (Session *sess, typerequest request)
 ???

void error (Session *sess, char *string)
 ???

void frontenddied ()
 ???

void pushc (Session *sess, char c)
 ???

char pullc (Session *sess)
 ???

bool gettumbler (Session *sess, Tumbler *tumblerptr)
 parse a tumbler value from the input stream

bool getnumber (Session *sess, int *numptr)
 ???

bool eatchar (Session *sess, char c)
 ???

bool getspecset (Session *sess, typespecset *specsetptr)
 ???

bool getcutseq (Session *sess, typecutseq *cutseqptr)
 ???

bool gettextset (Session *sess, typetextset *textsetptr)
 ???

bool getrequest (Session *sess, typerequest *requestptr)
 ???

bool validaccount (Session *sess, IStreamAddr *accountptr)
 ???


Variables

FILE * logfile
FILE * nulllog
FILE * reallog
bool logstuff
FILE * interfaceinput
FILE * febelog


Detailed Description

Udanax bottom-level input routines - front end version.

(to be defined)

Definition in file get2fe.cxx.


Define Documentation

#define SPANFLAG   's'
 

Definition at line 96 of file get2fe.cxx.

Referenced by getspecset().

#define TEXTFLAG   't'
 

Definition at line 98 of file get2fe.cxx.

Referenced by puttextset().

#define TUMDELIM   '.'
 

Definition at line 95 of file get2fe.cxx.

Referenced by gettdigit(), and puttumbler().

#define VSPECFLAG   'v'
 

Definition at line 97 of file get2fe.cxx.

Referenced by getspecset().

#define WORDELIM   '~'
 

Definition at line 94 of file get2fe.cxx.

Referenced by getnumber(), getrequest(), getspecset(), gettumbler(), pullc(), putnumber(), and puttumbler().


Function Documentation

bool eatchar Session sess,
char  c
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 291 of file get2fe.cxx.

References metachar, pullc(), and pushc().

Referenced by getbool(), gettumbler(), and needchar().

00292                                : User's session context
00293     char     c)
00294 {
00295     metachar m;
00296 
00297     if ((m = pullc(sess)) != c) {
00298         pushc(sess, m);
00299         return false;
00300     } else
00301         return true;
00302 }

void error Session session,
char *  string
 

???

(to be defined)

Parameters:
session  Input: User's session context

Definition at line 113 of file put.cxx.

References Session::errp, and xuputstring().

Referenced by getbool(), gettumbler(), navigateonht(), pushc(), and putitem().

00114                                : User's session context
00115     char    *string)
00116 {
00117     fprintf(sess->errp, "%s", string);
00118 }

void frontenddied  ) 
 

???

(to be defined)

Definition at line 250 of file be.cxx.

00251 {
00252     L("The frontend apparently has died.\n");
00253     diskexit();
00254     assert(0); // The frontend died
00255 }

bool getcutseq Session sess,
typecutseq cutseqptr
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 432 of file get2fe.cxx.

References typecutseq::cutsarray, getnumber(), gettumbler(), and typecutseq::numberofcuts.

Referenced by getrearrange().

00433                                   : User's session context
00434     typecutseq *cutseqptr)
00435 {
00436     int ncuts, i;
00437 
00438 /* fprintf (logfile, " cutseq"); */
00439     if (!(getnumber(sess, &ncuts) && (ncuts == 3 || ncuts == 4)))
00440         return false;
00441 
00442 /* fprintf (logfile, " {"); */
00443     cutseqptr->numberofcuts = ncuts;
00444 
00445     for (i = 0; i < ncuts; ++i) {
00446         if (!gettumbler(sess, &cutseqptr->cutsarray[i]))
00447             return false;
00448     }
00449 /* fprintf (logfile, " }"); */
00450     return true;
00451 }

bool getnum Session sess,
int *  numptr
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 120 of file get2.cxx.

References Session::errp, Session::inp, and metachar.

Referenced by getnumber(), gettdigit(), and gettumbler().

00121                                : User's session context
00122     int     *numptr)
00123 {                                      /* inside temporary */
00124     metachar c;
00125     int num;
00126 
00127     bool flag = false;                 /* should check for minus */
00128     for (num = 0; (c = getc(sess->inp)) != EOF && isdigit(c);) {
00129         num = num * 10 + c - '0';
00130         flag = true;
00131     }
00132 
00133     if (!flag) {
00134         fprintf(sess->errp, "no number\n");
00135 #ifndef DISTRIBUTION
00136         if (c == '?' || c == 'h') {
00137             system("cat /usr3/xu/requests.j");
00138         } else if (c == '!') {
00139             system("csh");
00140         }
00141 #endif
00142     } else {
00143         ungetc(c, sess->inp);
00144         *numptr = num;
00145     }
00146     return flag;
00147 }

bool getnumber Session sess,
int *  numptr
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 266 of file get2fe.cxx.

References pullc(), and WORDELIM.

Referenced by getcutseq(), getfindnextnlinksfromtothree(), getfollowlink(), getopen(), getrequest(), getspecset(), gettextset(), and setdebug().

00267                                : User's session context
00268     int     *numptr)
00269 {
00270     int num = 0;
00271     bool flag = false;
00272 
00273     char c;
00274     while ((c = pullc(sess)) && isdigit(c)) {
00275         num = num * 10 + c - '0';
00276         flag = true;
00277     }
00278     *numptr = num;
00279 /* fprintf (logfile, " %d", *numptr); */
00280     return flag && (c == WORDELIM || c == '\n');
00281 }

bool getrequest Session sess,
typerequest *  requestptr
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 533 of file get2fe.cxx.

References Session::charinbuff, getnumber(), Session::inp, L, logfile, prompt(), pullc(), validrequest(), and WORDELIM.

Referenced by xanadu().

00534                                    : User's session context
00535     typerequest *requestptr)
00536 {
00537     char c;
00538     int num;
00539     bool flag;
00540 
00541 /* fprintf (logfile, "\nrequest "); */
00542     sess->charinbuff = false;
00543 /* 
00544  * return ( getnumber (sess, requestptr) && validrequest (sess,
00545  * *requestptr)); */
00546     num = 0;
00547     flag = false;
00548     while ((c = pullc(sess)) != 0) {
00549         fprintf(logfile, "%c", c);
00550         if (!isdigit(c))
00551             break;
00552         num = num * 10 + c - '0';
00553         flag = true;
00554     }
00555     *requestptr = num;
00556     return flag && (c == WORDELIM || c == '\n') && validrequest(sess, *requestptr);
00557 }

bool getspan Session sess,
typespan spanptr,
typeitemid  id
 

???

(to be defined)

Referenced by getdeletevspan(), getspanset(), and getspecset().

bool getspanset Session sess,
typespanset spansetptr,
typeitemid  id
 

???

(to be defined)

Referenced by getboolset(), getfindlinksfromtothree(), and getvspec().

bool getspecset Session sess,
typespecset specsetptr
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 312 of file get2fe.cxx.

References getnumber(), getspan(), getvspec(), ISPANID, NULL, pullc(), SPANFLAG, typespecset, VSPECFLAG, and WORDELIM.

Referenced by getcopy(), getcreatelink(), getfinddocscontaining(), getfindlinksfromtothree(), getretrieveendsets(), getretrievev(), and getshowrelationof2versions().

00313                                    : User's session context
00314     typespecset *specsetptr)
00315 {
00316     int num;
00317     char c, c1;
00318     typespecset specset;
00319 
00320     *specsetptr = NULL;
00321     if (!getnumber(sess, &num))
00322         return false;
00323 
00324     if (num == 0)
00325         return true;
00326 
00327     while (num--) {
00328         c = pullc(sess);
00329         if ((c != SPANFLAG) && (c != VSPECFLAG))
00330             return false;
00331 
00332 /* mightn't work */ if ((c1 = pullc(sess)) != WORDELIM && c1 != '\n')
00333             return false;
00334 
00335         if (c == SPANFLAG) {
00336             specset = (typespecset) new(sess) typespan;
00337 //            specset = (typespecset) sess->alloc(sizeof(typespan));
00338             if (!getspan(sess, (typespan *) specset, ISPANID))
00339                 return false;
00340         } else {
00341             specset = (typespecset) new(sess) typevspec;
00342 //            specset = (typespecset) sess->alloc(sizeof(typevspec));
00343             if (!getvspec(sess, (typevspec *) specset))
00344                 return false;
00345         }
00346 
00347         *specsetptr = specset;
00348         specsetptr = (typespecset *) & ((typeitemheader *) specset)->next;
00349     }
00350     return true;
00351 }

bool gettdigit Session sess,
int *  valueptr
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 218 of file get2fe.cxx.

References getnum(), pullc(), pushc(), and TUMDELIM.

Referenced by gettumbler().

00219                                : User's session context
00220     int     *valueptr)
00221 {
00222     char c;
00223     if ((c = pullc(sess)) != TUMDELIM) {
00224         pushc(sess, c);
00225         return (false);
00226     }
00227     return getnum(sess, valueptr);
00228 }

bool gettext Session sess,
typetext textptr
 

???

(to be defined)

Referenced by gettextset().

bool gettextset Session sess,
typetextset textsetptr
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 461 of file get2fe.cxx.

References getnumber(), gettext(), typetext::next, NULL, and typetextset.

Referenced by getinsert().

00462                                    : User's session context
00463     typetextset *textsetptr)
00464 {
00465     typetextset textset;
00466     int num;
00467 
00468 /* fprintf (logfile, " textset"); fprintf (sess->errp, "X gettextset\n"); */
00469     *textsetptr = NULL;
00470     if (!getnumber(sess, &num))
00471         return false;
00472 
00473 /* fprintf (sess->errp, "X number of texts is %d\n", num); fprintf (logfile, " {"); */
00474     while (num--) {
00475         textset = (typetextset) new(sess) typetext;
00476 //        textset = (typetextset) sess->alloc(sizeof(typetext));
00477         if (!gettext(sess, textset))
00478             return false;
00479 
00480         *textsetptr = textset;
00481         textsetptr = &textset->next;
00482     }
00483 /* fprintf (logfile, " }"); */
00484     return true;
00485 }

bool gettumbler Session sess,
Tumbler tumblerptr
 

parse a tumbler value from the input stream

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 187 of file get2fe.cxx.

References error(), Tumbler::exp, getnum(), gettdigit(), Tumbler::mantissa, NPLACES, pullc(), tumblerclear, and WORDELIM.

Referenced by getclose(), getcopy(), getcreatelink(), getcreatenewversion(), getcreatenode_or_account(), getcutseq(), getdeletevspan(), getfindnextnlinksfromtothree(), getfollowlink(), getinsert(), getisa(), getopen(), getrearrange(), getretrievedocvspan(), getretrievedocvspanset(), getvsa(), getxaccount(), and showorgl().

00188                                : User's session context
00189     Tumbler *tumblerptr)
00190 {
00191     char c;
00192     int i, num, value;
00193 
00194 /* fprintf(sess->errp,"X gettumbler\n"); */
00195     tumblerclear(tumblerptr);
00196     getnum(sess, &num);
00197     tumblerptr->exp = -num;
00198 
00199     for (i = 0; gettdigit(sess, &value); i++) {
00200         if (i > NPLACES) {
00201             error(sess, "gettumbler overflow\n");
00202             return false;
00203         }
00204         tumblerptr->mantissa[i] = value;
00205     }
00206 /* fprintf (logfile, " "); puttumbler (logfile, tumblerptr); */
00207     return (c = pullc(sess)) == WORDELIM || c == '\n';
00208 }

bool getvspec Session sess,
typevspec vspecptr
 

???

(to be defined)

Referenced by getspecset().

char pullc Session sess  ) 
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 146 of file get2fe.cxx.

References Session::charbuff, Session::charinbuff, febelog, frontenddied(), Session::inp, interfaceinput, L, logstuff, nulllog, user, and WORDELIM.

Referenced by eatchar(), establishprotocol(), getnumber(), getrequest(), getspecset(), gettdigit(), and gettumbler().

00147                                : User's session context
00148 {
00149     int temp;
00150 
00151     if (sess->charinbuff) {
00152         sess->charinbuff = false;
00153         return sess->charbuff;
00154 
00155     } else {
00156         temp = getc(sess->inp);
00157         if (temp == EOF) {
00158             L("EOF on user %d in pullc\n", user);
00159             frontenddied();            /* does longjmp in backenddaemon, exit in backend */
00160 
00161             /* L("Premature end-of-file in backend\n"); diskexit (); // try to avoid screwing enf.enf //
00162  * assert(0); "pullc" */
00163         }
00164 
00165         temp &= 0x7f;
00166         if (logstuff && interfaceinput && interfaceinput != nulllog) {
00167             if (temp == WORDELIM)
00168                 putc('\n', interfaceinput);
00169             else
00170                 putc(temp, interfaceinput);
00171         }
00172 
00173         if (febelog && febelog != nulllog)
00174             putc(temp, febelog);
00175         return temp;
00176     }
00177 }

void pushc Session sess,
char  c
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 126 of file get2fe.cxx.

References Session::charbuff, Session::charinbuff, and error().

Referenced by eatchar(), and gettdigit().

00127                                : User's session context
00128     char     c)
00129 {
00130     if (sess->charinbuff)
00131         error(sess, "charbuff occupied\n");
00132     else {
00133         sess->charinbuff = true;
00134         sess->charbuff = c;
00135     }
00136 }

bool validaccount Session sess,
IStreamAddr accountptr
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 587 of file get2fe.cxx.

Referenced by getxaccount().

00588                                    : User's session context
00589     IStreamAddr *accountptr)
00590 {
00591     return true;
00592 }

bool validrequest Session sess,
typerequest  request
 

???

(to be defined)

Referenced by getrequest().


Variable Documentation

FILE* febelog
 

Definition at line 106 of file get2fe.cxx.

FILE* interfaceinput
 

Definition at line 105 of file get2fe.cxx.

FILE* logfile
 

Definition at line 100 of file get2fe.cxx.

bool logstuff
 

Definition at line 104 of file get2fe.cxx.

FILE* nulllog
 

Definition at line 101 of file get2fe.cxx.

FILE* reallog
 

Definition at line 102 of file get2fe.cxx.


Generated on Sun Aug 21 04:18:44 2005 for Udanax-Green by doxygen1.3.4