---
name: "Ns_SetUrlToFileProc"
section: "3aolserver"
platform: "linux"
package: "aolserver4-dev"
version: "4.5.1-18.1"
release: "Debian 9 (Stretch)"
platforms: ["linux"]
url: "https://new.carta.tech/Ns_SetUrlToFileProc/3aolserver"
---

# Ns\_SetUrlToFileProc(3aolserver)

URL to file mapping procedures

```

```

## 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)](/info/n.md)

## KEYWORDS
