[0001]
[0002]
[0003]
[0004]
[0005]
[0006]
[0007]
[0008]
[0009]
[0010]
[0011]
[0012]
[0013]
[0014]
[0015]
[0016]
[0017]
[0018]
[0019]
[0020]
[0021]
[0022]
[0023]
[0024]
[0025]
[0026]
[0027]
[0028]
[0029]
[0030]
[0031]
[0032]
[0033]
[0034]
[0035]
[0036]
[0037]
[0038]
[0039]
[0040]
[0041]
[0042]
[0043]
[0044]
[0045]
[0046]
[0047]
[0048]
[0049]
[0050]
[0051]
[0052]
[0053]
[0054]
[0055]
[0056]
[0057]
[0058]
[0059]
[0060]
[0061]
[0062]
[0063]
[0064]
[0065]
[0066]
[0067]
[0068]
[0069]
[0070]
[0071]
[0072]
[0073]
[0074]
[0075]
[0076]
[0077]
[0078]
[0079]
[0080]
[0081]
[0082]
[0083]
[0084]
[0085]
[0086]
[0087]
[0088]
[0089]
[0090]
[0091]
[0092]
[0093]
[0094]
[0095]
[0096]
[0097]
[0098]
[0099]
[0100]
[0101]
[0102]
[0103]
[0104]
[0105]
[0106]
[0107]
[0108]
[0109]
[0110]
[0111]
[0112]
[0113]
[0114]
[0115]
[0116]
[0117]
[0118]
[0119]
[0120]
[0121]
[0122]
[0123]
[0124]
[0125]
[0126]
[0127]
[0128]
[0129]
[0130]
[0131]
[0132]
[0133]
[0134]
[0135]
[0136]
[0137]
[0138]
[0139]
[0140]
[0141]
[0142]
[0143]
[0144]
[0145]
[0146]
[0147]
[0148]
[0149]
[0150]
[0151]
[0152]
[0153]
[0154]
[0155]
[0156]
[0157]
[0158]
[0159]
[0160]
[0161]
[0162]
[0163]
[0164]
[0165]
[0166]
[0167]
[0168]
[0169]
[0170]
[0171]
[0172]
[0173]
[0174]
[0175]
[0176]
[0177]
[0178]
[0179]
[0180]
[0181]
[0182]
[0183]
[0184]
[0185]
[0186]
[0187]
[0188]
[0189]
[0190]
[0191]
[0192]
[0193]
[0194]
[0195]
[0196]
[0197]
[0198]
[0199]
[0200]
[0201]
[0202]
[0203]
[0204]
[0205]
[0206]
[0207]
[0208]
[0209]
/*****************************************************************************/
/*
                                  Dir.h
*/
/*****************************************************************************/

#ifndef DIR_H_LOADED
#define DIR_H_LOADED 1

#include "wasd.h"
#include "file.h"

/**************/
/* structures */
/**************/

#pragma __member_alignment __save
#pragma member_alignment

typedef struct DirTaskStruct DIR_TASK;

struct DirTaskStruct
{
   BOOL  /* query string directive */
         AsIfNopFound,
         /* query string directive */
         AsIfNosFound,
         /* disables auto-scripting appending version */
         AutoScriptEnabled,
         /* */
         DirFormatBlockTotals,
         /* the original specification's file/type/version was not empty */
         DirSpecIncludedFilePart,
         /* directory style is formatted by table elements */
         DirStyleTabular,
         /* present a directory listing ("Index of") in a VMS-style */
         FormatLikeVms,
         /* make icon a plain-text link */
         IconLinkEnabled,
         /* query string directive */
         IncludeAnyReadme,
         /* */
         ListParentDir,
         /* */
         ListSubDir,
         /* make the file description a link */
         MakeDescriptionLink,
         /* allow query string to override .WWW_WASD */
         QueryOverride,
         /* HTTP header generated by directory lisitng, i.e. not embedded */
         ResponseHeaderSent,
         /* do not display the file's type (e.g. ".TXT") */
         ShowNoType,
         /* force director and file names to upper-case */
         ShowUpperCase;

   int  /* for sortable listing */
        ColSpanCount,
        /* */
        DirAccessOkState,
        /* */
        DirAccessOkStatus,
        /* header, footer, both, none */
        DirDelimit,
        /* listing font monospace (D) or inherit */
        DirFont,
        /* historical styles of WASD lisitings */
        DirStyle,
        /* page title */
        DirTitle,
        /* */
        DirectoryCount,
        /* */
        LayoutFaoLength, 
        /* */
        LayoutHeadingLength, 
        /* */
        DirSpecLength,
        /* */
        FieldWidthCdt,
        /* */
        FieldWidthDescription,
        /* */
        FieldWidthName,
        /* */
        FieldWidthOwner,
        /* */
        FieldWidthProtection,
        /* */
        FieldWidthRdt,
        /* */
        FieldWidthSize,
        /* */
        FileCount,
        /* */
        ReadMeFileIndex,
        /* */
        SizeKilo,
        /* buffer for most recent task status */
        TaskStatusBuffer,
        /* number of versions of a single file */
        VersionCount,
        /* when version of this contains the length of the last file name */
        VersionLength,
        /* index directive to display a maximum of this number of versions */
        VersionsOf;

   unsigned long  /* for directory module, file's allocated blocks */
                  TotalAllocatedBlocks,
                  /* for directory module, file's used blocks */
                  TotalUsedBlocks;

   char  /* pointer to heap storage URL equivalent of directory */
         *DirectoryPathPtr,
         /* */
         *DirFormatParentDirPath,
         /* page title string literal (if non-NULL) */
         *DirTitlePtr,
         /* pointer to column headings string */
         *LayoutHeadingPtr,
         /* pointer to directory layout string */
         *LayoutPtr,
         /* pointer to sys$fao() directive string */
         *LayoutFaoPtr,
         /* pointer to message string describing subdirectory */
         *MsgSubDirPtr,
         /* pointer to request specified content-type */
         *QueryContentTypePtr,
         /* query string for directives */
         *QueryStringPtr,
         /* allocated memory containing series of null-terminated strings */
         *ThesePtr;
                  
   char  /* scratch space for file description */
         Description [256],
         /* directory part of file specification */
         DirectoryPart [ODS_MAX_FILE_NAME_LENGTH+1],
         /* directory specification */
         DirPath [ODS_MAX_FILE_NAME_LENGTH+1],
         /* sort at page load */
         DirSort [2+1],
         /* directory path specification */
         DirSpec [ODS_MAX_FILE_NAME_LENGTH+1],
         /* file part of file specification */
         FilePart [ODS_MAX_FILE_NAME_LENGTH+1],
         /* */
         LinkTarget [sizeof(" target=\"\"")+32],
         /* only when specified as "/dir1/dir2" this contains "./dir2/" */
         RealPath [ODS_MAX_FILE_NAME_LENGTH+1],
         /* prepended script name */
         ScriptName [SCRIPT_NAME_SIZE],
         /* when doing version of this contains the last file name */
         VersionName [ODS_MAX_FILE_NAME_LENGTH+1];

   /* */
   CONTENT_TYPE  ContentInfo;

   /* used for retrieving file size, dates, etc. */
   FILE_QIO  FileAcpData;

   /* "on-disk structure" supporting both ODS-2 and ODS-5 */
   ODS_STRUCT  SearchOds;

   /* pointers to functions, used for specifying the next/AST task */
   REQUEST_AST NextTaskFunction;
   REQUEST_AST DirAccessOkAstFunction;
   REQUEST_AST DirFormatAstFunction;
};

#pragma __member_alignment __restore

/***********************/
/* function prototypes */
/***********************/

DirAccessOk (REQUEST_STRUCT*);
DirAuthorizationAst (REQUEST_STRUCT*);
DirBegin (REQUEST_STRUCT*, REQUEST_AST, char*, char*, char*, BOOL);
DirBeginDirectories (REQUEST_STRUCT*);
DirBeginDirectoriesParseAst (REQUEST_STRUCT*);
DirBeginFiles (REQUEST_STRUCT*);
DirBeginFilesParseAst (REQUEST_STRUCT*);
DirDirectString (REQUEST_STRUCT*, char*);
DirDirectories (REQUEST_STRUCT*);
DirDirectoriesAccessOkAst (REQUEST_STRUCT*);
DirEnd (REQUEST_STRUCT*);
DirEndDescription (REQUEST_STRUCT*);
DirEndOutput (REQUEST_STRUCT*);
DirFiles (REQUEST_STRUCT*);
DirFilePart (REQUEST_STRUCT*);
DirFormat (REQUEST_STRUCT*, REQUEST_AST, char*, BOOL);
DirFormatAcpInfoAst (REQUEST_STRUCT*);
DirFormatLayout (REQUEST_STRUCT*);
int DirFormatSize (uint64, char*, int, struct dsc$descriptor*);
DirHeading (REQUEST_STRUCT*);
int DirHttpHeader (REQUEST_STRUCT*);
DirReadMe (REQUEST_STRUCT*, void(*NextTaskFunction)(REQUEST_STRUCT*));
int DirIndexOf (REQUEST_STRUCT*, char*, char*);
DirReadMeTop (REQUEST_STRUCT*);
DirReadMeBottom (REQUEST_STRUCT*);
DirSearchDirectories (REQUEST_STRUCT*);
DirSearchFiles (REQUEST_STRUCT*);
BOOL DirTheseFiles (REQUEST_STRUCT*);
char* DirTitleInteger (REQUEST_STRUCT*);
int DirWwwWasd (REQUEST_STRUCT*);

#endif /* DIR_H_LOADED */

/*****************************************************************************/