[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [59625] trunk/blender/source/blender: default blend file name setting (untitled.blend) length check wasn' t correct, move to generic function BLI_ensure_filename().

Campbell Barton ideasman42 at gmail.com
Thu Aug 29 07:34:59 CEST 2013


Revision: 59625
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59625
Author:   campbellbarton
Date:     2013-08-29 05:34:58 +0000 (Thu, 29 Aug 2013)
Log Message:
-----------
default blend file name setting (untitled.blend) length check wasn't correct, move to generic function BLI_ensure_filename().

Modified Paths:
--------------
    trunk/blender/source/blender/blenlib/BLI_path_util.h
    trunk/blender/source/blender/blenlib/intern/path_util.c
    trunk/blender/source/blender/windowmanager/intern/wm_operators.c

Modified: trunk/blender/source/blender/blenlib/BLI_path_util.h
===================================================================
--- trunk/blender/source/blender/blenlib/BLI_path_util.h	2013-08-29 04:31:55 UTC (rev 59624)
+++ trunk/blender/source/blender/blenlib/BLI_path_util.h	2013-08-29 05:34:58 UTC (rev 59625)
@@ -122,6 +122,7 @@
 bool BLI_testextensie_glob(const char *str, const char *ext_fnmatch);
 bool BLI_replace_extension(char *path, size_t maxlen, const char *ext);
 bool BLI_ensure_extension(char *path, size_t maxlen, const char *ext);
+bool BLI_ensure_filename(char *filepath, size_t maxlen, const char *filename);
 void BLI_uniquename(struct ListBase *list, void *vlink, const char *defname, char delim, short name_offs, short len);
 bool BLI_uniquename_cb(bool (*unique_check)(void *arg, const char *name),
                        void *arg, const char * defname, char delim, char *name, short name_len);

Modified: trunk/blender/source/blender/blenlib/intern/path_util.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/path_util.c	2013-08-29 04:31:55 UTC (rev 59624)
+++ trunk/blender/source/blender/blenlib/intern/path_util.c	2013-08-29 05:34:58 UTC (rev 59625)
@@ -1641,6 +1641,16 @@
 	return true;
 }
 
+bool BLI_ensure_filename(char *filepath, size_t maxlen, const char *filename)
+{
+	char *c = (char *)BLI_last_slash(filepath);
+	if (!c || ((c - filepath) < maxlen - (strlen(filename) + 1))) {
+		strcpy(c ? &c[1] : filepath, filename);
+		return true;
+	}
+	return false;
+}
+
 /* Converts "/foo/bar.txt" to "/foo/" and "bar.txt"
  * - wont change 'string'
  * - wont create any directories

Modified: trunk/blender/source/blender/windowmanager/intern/wm_operators.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_operators.c	2013-08-29 04:31:55 UTC (rev 59624)
+++ trunk/blender/source/blender/windowmanager/intern/wm_operators.c	2013-08-29 05:34:58 UTC (rev 59625)
@@ -2419,15 +2419,10 @@
 
 /* *************** save file as **************** */
 
-static void untitled(char *filepath)
+static void wm_filepath_default(char *filepath)
 {
-	if (G.save_over == 0 && strlen(filepath) < FILE_MAX - 16) {
-		char *c = (char *)BLI_last_slash(filepath);
-		
-		if (c)
-			strcpy(&c[1], "untitled.blend");
-		else
-			strcpy(filepath, "untitled.blend");
+	if (G.save_over == false) {
+		BLI_ensure_filename(filepath, FILE_MAX, "untitled.blend");
 	}
 }
 
@@ -2455,7 +2450,7 @@
 	else
 		BLI_strncpy(name, G.main->name, FILE_MAX);
 	
-	untitled(name);
+	wm_filepath_default(name);
 	RNA_string_set(op->ptr, "filepath", name);
 	
 	WM_event_add_fileselect(C, op);
@@ -2471,11 +2466,12 @@
 
 	save_set_compress(op);
 	
-	if (RNA_struct_property_is_set(op->ptr, "filepath"))
+	if (RNA_struct_property_is_set(op->ptr, "filepath")) {
 		RNA_string_get(op->ptr, "filepath", path);
+	}
 	else {
 		BLI_strncpy(path, G.main->name, FILE_MAX);
-		untitled(path);
+		wm_filepath_default(path);
 	}
 	
 	fileflags = G.fileflags & ~G_FILE_USERPREFS;
@@ -2566,7 +2562,7 @@
 	else
 		BLI_strncpy(name, G.main->name, FILE_MAX);
 
-	untitled(name);
+	wm_filepath_default(name);
 	
 	RNA_string_set(op->ptr, "filepath", name);
 




More information about the Bf-blender-cvs mailing list