S-Lang Run-Time Library Reference: Version 2.0.4: Directory Functions

Next Previous Contents

## 15. Directory Functions

## 15.1 chdir

Synopsis

  Change the current working directory

Usage

  `Int_Type chdir (String_Type dir)`

Description

  The `chdir` function may be used to change the current working directory to the directory specified by `dir`. Upon success it returns zero. Upon failure it returns `-1` and sets `errno` accordingly.

See Also

  `mkdir, stat_file`

## 15.2 chmod

Synopsis

  Change the mode of a file

Usage

  `Int_Type chmod (String_Type file, Int_Type mode)`

Description

  The `chmod` function changes the permissions of the specified file to those given by `mode`. It returns `0` upon success, or `-1` upon failure setting `errno` accordingly.

  See the system specific documentation for the C library function `chmod` for a discussion of the `mode` parameter.

See Also

  `chown, stat_file`

## 15.3 chown

Synopsis

  Change the owner of a file

Usage

  `Int_Type chown (String_Type file, Int_Type uid, Int_Type gid)`

Description

  The `chown` function is used to change the user-id and group-id of `file` to `uid` and `gid`, respectively. It returns 0 upon success and -1 upon failure, with `errno` set accordingly.

Notes

  On most systems, only the superuser can change the ownership of a file.

  Some systems do not support this function.

See Also

  `chmod, stat_file`

## 15.4 getcwd

Synopsis

  Get the current working directory

Usage

  `String_Type getcwd ()`

Description

  The `getcwd` function returns the absolute pathname of the current working directory. If an error occurs or it cannot determine the working directory, it returns `NULL` and sets `errno` accordingly.

Notes

  Under Unix, OS/2, and MSDOS, the pathname returned by this function includes the trailing slash character. It may also include the drive specifier for systems where that is meaningful.

See Also

  `mkdir, chdir, errno`

## 15.5 listdir

Synopsis

  Get a list of the files in a directory

Usage

  `String_Type[] listdir (String_Type dir)`

Description

  The `listdir` function returns the directory listing of all the files in the specified directory `dir` as an array of strings. It does not return the special files `".."` and `"."` as part of the list.

See Also

  `stat_file, stat_is, length`

## 15.6 lstat_file

Synopsis

  Get information about a symbolic link

Usage

  `Struct_Type lstat_file (String_Type file)`

Description

  The `lstat_file` function behaves identically to `stat_file` but if `file` is a symbolic link, `lstat_file` returns information about the link itself, and not the file that it references.

  See the documentation for `stat_file` for more information.

Notes

  On systems that do not support symbolic links, there is no difference between this function and the `stat_file` function.

See Also

  `stat_file, readlink`

## 15.7 mkdir

Synopsis

  Create a new directory

Usage

  `Int_Type mkdir (String_Type dir [,Int_Type mode])`

Description

  The `mkdir` function creates a directory whose name is specified by the `dir` parameter with permissions given by the optional `mode` parameter. Upon success `mkdir` returns 0, or it returns `-1` upon failure setting `errno` accordingly. In particular, if the directory already exists, the function will fail and set errno to `EEXIST`.

Example

  > `

  >          define my_mkdir (dir)
  >          {
  >             if (0 == mkdir (dir)) return;
  >             if (errno == EEXIST) return;
  >             throw IOError,
  >                sprintf ("mkdir %s failed: %s", dir, errno_string (errno));
  >          }

  > `

Notes

  The `mode` parameter may not be meaningful on all systems. On systems where it is meaningful, the actual permissions on the newly created directory are modified by the process's umask.

See Also

  `rmdir, getcwd, chdir, fopen, errno`

## 15.8 readlink

Synopsis

  String_Type readlink (String_Type path)

Usage

  `Get the value of a symbolic link`

Description

  The `readlink` function returns the value of a symbolic link. Upon failure, `NULL` is returned and `errno` set accordingly.

Notes

  Not all systems support this function.

See Also

  `symlink, lstat_file, stat_file, stat_is`

## 15.9 remove

Synopsis

  Delete a file

Usage

  `Int_Type remove (String_Type file)`

Description

  The `remove` function deletes a file. It returns 0 upon success, or -1 upon error and sets `errno` accordingly.

See Also

  `rename, rmdir`

## 15.10 rename

Synopsis

  Rename a file

Usage

  `Int_Type rename (String_Type old, String_Type new)`

Description

  The `rename` function renames a file from `old` to `new` moving it between directories if necessary. This function may fail if the directories are not on the same file system. It returns 0 upon success, or -1 upon error and sets `errno` accordingly.

See Also

  `remove, errno`

## 15.11 rmdir

Synopsis

  Remove a directory

Usage

  `Int_Type rmdir (String_Type dir)`

Description

  The `rmdir` function deletes the specified directory. It returns 0 upon success or -1 upon error and sets `errno` accordingly.

Notes

  The directory must be empty before it can be removed.

See Also

  `rename, remove, mkdir`

## 15.12 stat_file

Synopsis

  Get information about a file

Usage

  `Struct_Type stat_file (String_Type file)`

Description

  The `stat_file` function returns information about `file` through the use of the system `stat` call. If the stat call fails, the function returns `NULL` and sets errno accordingly. If it is successful, it returns a stat structure with the following integer-value fields:

  > `

  >         st_dev
  >         st_ino
  >         st_mode
  >         st_nlink
  >         st_uid
  >         st_gid
  >         st_rdev
  >         st_size
  >         st_atime
  >         st_mtime
  >         st_ctime

  > `

  See the C library documentation of `stat` for a discussion of the meanings of these fields.
Example

  The following example shows how the `stat_file` function may be used to get the size of a file:

  > `

  >          define file_size (file)
  >          {
  >             variable st;
  >             st = stat_file(file);
  >             if (st == NULL)
  >               throw IOError, "Unable to stat $file"$;
  >             return st.st_size;
  >          }

  > `

See Also

  `lstat_file, stat_is`

## 15.13 stat_is

Synopsis

  Parse the st_mode field of a stat structure

Usage

  `Char_Type stat_is (String_Type type, Int_Type st_mode)`

Description

  The `stat_is` function returns a boolean value according to whether or not the `st_mode` parameter is of the specified type. Specifically, `type` must be one of the strings:

  > `

  >          "sock"     (socket)
  >          "fifo"     (fifo)
  >          "blk"      (block device)
  >          "chr"      (character device)
  >          "reg"      (regular file)
  >          "lnk"      (link)
  >          "dir"      (dir)

  > `

  It returns a non-zero value if `st_mode` corresponds to `type`.
Example

  The following example illustrates how to use the `stat_is` function to determine whether or not a file is a directory:

  > `

  >          define is_directory (file)
  >          {
  >             variable st;

  >             st = stat_file (file);
  >             if (st == NULL) return 0;
  >             return stat_is ("dir", st.st_mode);
  >          }

  > `

See Also

  `stat_file, lstat_file`

## 15.14 symlink

Synopsis

  Create a symbolic link

Usage

  `status = symlink (String_Type oldpath, String_Type new_path)`

Description

  The `symlink` function may be used to create a symbolic link named `new_path` for `oldpath`. If successful, the function returns 0, otherwise it returns -1 and sets `errno` appropriately.

Notes

  This function is not supported on all systems and even if supported, not all file systems support the concept of a symbolic link.

See Also

  `readlink`

Next Previous Contents