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 directories. They are normally
used to determine whether a given URL has a corresponding file or directory
and to return the real filesystem 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. Return 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 a File", 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 appended to the Ns_DString.
The function does not check that the file exists or is readable by the
AOLserver process. This function returns 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 to point to
it, your routine is called instead. 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)
KEYWORDS¶