Johannes Schindelin [off-list ref] writes:
The function get_relative_cwd() works just as getcwd(), only that it
takes an absolute path as additional parameter, returning the prefix
of the current working directory relative to the given path. If the
cwd is no subdirectory of the given path, it returns NULL.
...
+/*
+ * get_relative_cwd() gets the prefix of the current working directory
+ * relative to 'dir'. If we are not inside 'dir', it returns NULL.
+ * As a convenience, it also returns NULL if 'dir' is already NULL.
+ */
+char *get_relative_cwd(char *buffer, int size, const char *dir)
+{
+ char *cwd = buffer;
+
+ if (!dir || !getcwd(buffer, size))
+ return NULL;
When is it not a fatal error if get_relative_cwd() is called
with a NULL dir parameter, or getcwd() fails?
If there is no valid such cases, I would rather have this
die(), former with "BUG" and the latter with strerror(errno).