Improve documentation
[sxemacs] / src / fileio.c
index bae112a..365885f 100644 (file)
@@ -35,6 +35,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 #ifdef FILE_CODING
 #include "mule/file-coding.h"
 #endif
+#include "ent/ent.h"
 
 #ifdef HAVE_LIBGEN_H           /* Must come before sysfile.h */
 #include <libgen.h>
@@ -377,6 +378,22 @@ Return the directory component in file name FILENAME.
 Return nil if FILENAME does not include a directory.
 Otherwise return a directory spec.
 Given a Unix syntax file name, returns a string ending in slash.
+
+Concatenating the return of file-name-directory and the string
+returned by file-name-nondirectory yields a complete pathname.
+
+Samples:
+filename       file-name-directory   file-name-nondirectory
+"/usr/lib"     "/usr/"               "lib"
+"/usr/lib/"    "/usr/lib/"           ""
+"/usr/"        "/usr/"               ""
+"/usr"         "/"                   "usr"
+"usr"          nil                   "usr"
+"/"            "/"                   ""
+"."            nil                   "."
+"./"           "./"                  ""
+".."           nil                   ".."
+
 */
       (filename))
 {
@@ -414,6 +431,24 @@ Return file name FILENAME sans its directory.
 For example, in a Unix-syntax file name,
 this is everything after the last slash,
 or the entire name if it contains no slash.
+
+Concatenating the return of file-name-directory and the string
+returned by file-name-nondirectory yields a complete pathname.
+
+It is equivalent to the GNU version of basename.
+
+Samples:
+filename       file-name-directory   file-name-nondirectory
+"/usr/lib"     "/usr/"               "lib"
+"/usr/lib/"    "/usr/lib/"           ""
+"/usr/"        "/usr/"               ""
+"/usr"         "/"                   "usr"
+"usr"          nil                   "usr"
+"/"            "/"                   ""
+"."            nil                   "."
+"./"           "./"                  ""
+".."           nil                   ".."
+
 */
       (filename))
 {
@@ -1034,7 +1069,7 @@ See also the function `substitute-in-file-name'.
                        file_name_as_directory((char *)target, (char *)newdir, tlen);
        }
 
-       xstrncat((char *)target, (char *)nm, tlen);
+       xstrncat((char *)target, (char *)nm, tlen-1);
 
        /* ASSERT (IS_DIRECTORY_SEP (target[0])) if not VMS */
 
@@ -1544,7 +1579,7 @@ A prefix arg makes KEEP-TIME non-nil.
                                 O_RDONLY | OPEN_BINARY, 0);
        if (ifd < 0) {
                report_file_error("Opening input file", list1(filename));
-               return;
+               goto end;
        }
        record_unwind_protect(close_file_unwind, make_int(ifd));
 
@@ -1617,6 +1652,7 @@ A prefix arg makes KEEP-TIME non-nil.
                unbind_to(speccount, Qnil);
        }
 
+end:
        UNGCPRO;
        return Qnil;
 }