From c90c981570c974935953cc3ee742a4d009c31301 Mon Sep 17 00:00:00 2001 From: Michael R Sweet Date: Wed, 24 Apr 2002 12:14:57 +0000 Subject: Add -g option to fltk-config. Fix NULL filename bug in fl_file_chooser(). git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@2103 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/fl_file_dir.cxx | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/fl_file_dir.cxx b/src/fl_file_dir.cxx index 714d0e7f4..56fbf9cfe 100644 --- a/src/fl_file_dir.cxx +++ b/src/fl_file_dir.cxx @@ -1,5 +1,5 @@ // -// "$Id: fl_file_dir.cxx,v 1.1.2.7 2002/03/25 21:08:42 easysw Exp $" +// "$Id: fl_file_dir.cxx,v 1.1.2.8 2002/04/24 12:14:57 easysw Exp $" // // File chooser widget for the Fast Light Tool Kit (FLTK). // @@ -55,16 +55,24 @@ char* fl_file_chooser(const char* message, const char* pat, const char* fname) } else { if (!fname || !*fname) { if (fc->filter() != pat && (!pat || !fc->filter() || - strcmp(pat, fc->filter()))) { + strcmp(pat, fc->filter())) && fc->value()) { // if pattern is different, remove name but leave old directory: - char* p = (char *)fc->value(); - const char* q = fl_filename_name(p); - int i; - - if (q == NULL) i = 0; - else i = strlen(q); - - p[i] = 0; + strncpy(retname, fc->value(), sizeof(retname) - 1); + retname[sizeof(retname) - 1] = '\0'; + + char *p = strrchr(retname, '/'); + + if (p) { + // If the filename is "/foo", then the directory will be "/", not + // ""... + if (p == retname) + retname[1] = '\0'; + else + *p = '\0'; + } + + // Set the directory... + fc->directory(retname); } } else @@ -119,5 +127,5 @@ char* fl_dir_chooser(const char* message, const char* fname) // -// End of "$Id: fl_file_dir.cxx,v 1.1.2.7 2002/03/25 21:08:42 easysw Exp $". +// End of "$Id: fl_file_dir.cxx,v 1.1.2.8 2002/04/24 12:14:57 easysw Exp $". // -- cgit v1.2.3