Ns_UrlToFile.3aolserver

Langue: en

Version: 4.0 (debian - 07/07/09)

Section: 3 (Bibliothèques de fonctions)


 

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