ns_urltofile(3)
NAME
- Ns_SetUrlToFileProc, Ns_UrlIsDir, Ns_UrlIsFile,
- Ns_UrlToFile - URL to file mapping procedures
SYNOPSIS
#include "ns.h" void Ns_SetUrlToFileProc(char *server, Ns_UrlToFileProc *procPtr) int Ns_UrlIsDir(char *server, char *url) int Ns_UrlIsFile(char *server, char *url) int Ns_UrlToFile(Ns_DString *dsPtr, char *server, char *url)
DESCRIPTION
- These functions map URL paths to real files and directo
- ries. They are normally used to determine whether a given URL has
- a corresponding file or directory and to return the real filesys
- tem path that corresponds to the URL.
- Ns_SetUrlToFileProc(server, procPtr)
Set a pointer to a custom routine to use in place- of Ns_UrlToFile.
- Ns_UrlIsDir(server, url)
Construct a directory name by appending the URL to- the current AOLserver pages directory for the specified server.
- Return NS_TRUE if the directory exists; NS_FALSE otherwise.
- Ns_UrlIsFile(server, url)
Construct a file name by appending the URL to the- current AOLserver pages directory for the specified server. Re
- turn NS_TRUE if the file exists and is a regular file; NS_FALSE
- otherwise.
- Example:
- /* IsFile - Simple request to determine if an URL
- is a file. */
int
IsFile(Ns_Conn *conn, void *ctx)
{int isfile;
char *server;server = Ns_ConnServer(conn);
isfile = Ns_UrlIsFile(server, conn->request->url);
if (isfile) {Ns_ConnReturnNotice(conn, 200, "File",NULL);} else {Ns_ConnReturnNotice(conn, 200, "Not aFile", NULL);}
return NS_OK; - }
- Ns_UrlToFile(dsPtr, server, url)
The Ns_UrlToFile function writes the full path name- of the file corresponding to the given URL. The result is append
- ed to the Ns_DString. The function does not check that the file
- exists or is readable by the AOLserver process. This function re
- turns a status of NS_OK or NS_ERROR.
- Normally this prepends the pageroot to the URL
- path. If you have created your own custom routine and used
Ns_SetUrlToFileProc
stead. This could be used to create, for example, a module that
takes the given URL and maps it to a file in a different way than
the default Ns_UrlToFile routine.
Example:
- /* A simple page fetch request function. */
int
SimpleFetch(Ns_Conn *conn, void *ctx)
{ - Ns_DString ds;
FILE fp;
char *server;
Ns_DStringInit(&ds); - server = Ns_ConnServer(conn);
Ns_UrlToFile(&ds, server, conn->request->url);
fp = fopen(ds.string, "r");
Ns_ConnSendOpenFp(conn, fp, -1);
fclose(fp);
Ns_DStringFree(&ds);
return NS_OK; - }
SEE ALSO
nsd(1), info(n)