aboutsummaryrefslogtreecommitdiff
path: root/chad/experimental/change_directory.c
blob: 988b28acc6e4080a83a77cdeded3ad997db92a2f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <limits.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <chad/experimental/change_directory.h>
int change_directory(char * filename) {
  char path[PATH_MAX], * terminator;
  if (!realpath(filename, path)
  ||  !(terminator = strrchr(path, '/'))) { return -1; }
  *terminator = '\0';
  return chdir(path);
}