- char *pwd = get_current_dir_name();
- size_t len = strlen(pwd) + 1 + strlen(path) + 1;
- int has_trailing_backslash = (path[strlen(path)-1] == '/');
- if (!has_trailing_backslash)
- len++;
-
- absolute_path = (char*) malloc(sizeof(char) * len);
- memset(absolute_path, '\0', len);
- sprintf(absolute_path, "%s/%s", pwd, path);
-
- if(!has_trailing_backslash)
- absolute_path[len-2] = '/';
-
- if (is_directory(absolute_path) == -1) {
- free(absolute_path);
- return NULL;
- }
-
- return absolute_path;