changeset 485:469ff8133ed3

Simplified the folder browser on OS/2, following some Unix changes.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Thu, 16 Oct 2003 08:12:01 +0000
parents f18c70cb3e38
children 3bc712d2c362
files compat.c os2/dw.c
diffstat 2 files changed, 45 insertions(+), 82 deletions(-) [+]
line wrap: on
line diff
--- a/compat.c	Thu Oct 16 07:51:36 2003 +0000
+++ b/compat.c	Thu Oct 16 08:12:01 2003 +0000
@@ -547,6 +547,7 @@
 #endif
 #elif defined(__OS2__)
 	/* No snprintf() on OS/2 ??? */
+	len = len;
 	sprintf(buf, "Drive %c",  (char)drive + 'A' - 1);
 #else
 	_snprintf(buf, len, "Drive %c",  (char)drive + 'A' - 1);
@@ -576,6 +577,7 @@
 	sprintf(buffer, "%s %s", url, timebuf);
 
 #ifdef __OS2__
+	logfile = logfile;
 	eaop2.fpGEA2List = 0;
 	eaop2.fpFEA2List = (PFEA2LIST)malloc(fea2listsize);
 	pFEA2 = &eaop2.fpFEA2List->list[0];
--- a/os2/dw.c	Thu Oct 16 07:51:36 2003 +0000
+++ b/os2/dw.c	Thu Oct 16 08:12:01 2003 +0000
@@ -8076,56 +8076,39 @@
 }
 
 /* The next few functions are support functions for the OS/2 folder browser */
-void _populate_directory(HMTX mtx, HWND *tree, HTREEITEM parent, char *path)
+void _populate_directory(HWND tree, HTREEITEM parent, char *path)
 {
 	FILEFINDBUF3 ffbuf;
 	HTREEITEM item;
 	ULONG count = 1;
 	HDIR hdir = HDIR_CREATE;
 
-	dw_mutex_lock(mtx);
-	if(*tree)
-	{
-		if(DosFindFirst(path, &hdir, FILE_READONLY | FILE_HIDDEN | FILE_SYSTEM | FILE_ARCHIVED | MUST_HAVE_DIRECTORY,
-						&ffbuf, sizeof(FILEFINDBUF3), &count, FIL_STANDARD) == NO_ERROR)
+	if(DosFindFirst(path, &hdir, FILE_READONLY | FILE_HIDDEN | FILE_SYSTEM | FILE_ARCHIVED | MUST_HAVE_DIRECTORY,
+					&ffbuf, sizeof(FILEFINDBUF3), &count, FIL_STANDARD) == NO_ERROR)
+	{
+		while(DosFindNext(hdir, &ffbuf, sizeof(FILEFINDBUF3), &count) == NO_ERROR)
 		{
-			while(DosFindNext(hdir, &ffbuf, sizeof(FILEFINDBUF3), &count) == NO_ERROR)
+			if(strcmp(ffbuf.achName, ".") && strcmp(ffbuf.achName, ".."))
 			{
-				if(strcmp(ffbuf.achName, ".") && strcmp(ffbuf.achName, ".."))
-				{
-					int len = strlen(path);
-					char *folder = malloc(len + ffbuf.cchName + 2);
-					HTREEITEM tempitem;
-
-					strcpy(folder, path);
-					strcpy(&folder[len-1], ffbuf.achName);
-
-					item = dw_tree_insert(*tree, ffbuf.achName, WinLoadFileIcon(folder, TRUE), parent, (void *)parent);
-					tempitem = dw_tree_insert(*tree, "", 0, item, 0);
-					dw_tree_set_data(*tree, item, (void *)tempitem);
-
-					dw_mutex_unlock(mtx);
-					strcat(folder, "\\*");
-
-					free(folder);
-					dw_mutex_lock(mtx);
-					if(!*tree)
-					{
-						dw_mutex_unlock(mtx);
-						DosFindClose(hdir);
-						return;
-					}
-				}
+				int len = strlen(path);
+				char *folder = malloc(len + ffbuf.cchName + 2);
+				HTREEITEM tempitem;
+
+				strcpy(folder, path);
+				strcpy(&folder[len-1], ffbuf.achName);
+
+				item = dw_tree_insert(tree, ffbuf.achName, WinLoadFileIcon(folder, TRUE), parent, (void *)parent);
+				tempitem = dw_tree_insert(tree, "", 0, item, 0);
+				dw_tree_set_data(tree, item, (void *)tempitem);
 			}
-			DosFindClose(hdir);
 		}
-	}
-	dw_mutex_unlock(mtx);
+		DosFindClose(hdir);
+	}
 }
 
 void _populate_tree_thread(void *data)
 {
-	HWND window = (HWND)data, *tree = (HWND *)dw_window_get_data(window, "_dw_tree");
+	HWND window = (HWND)data, tree = (HWND)dw_window_get_data(window, "_dw_tree");
 	HMTX mtx = (HMTX)dw_window_get_data(window, "_dw_mutex");
 	int drive;
 	HTREEITEM items[26];
@@ -8133,6 +8116,7 @@
 
 	DosError(FERR_DISABLEHARDERR);
 
+	dw_mutex_lock(mtx);
 	for(drive=0;drive<26;drive++)
 	{
 		if(DosQueryFSInfo(drive+1, FSIL_VOLSER,(PVOID)&volinfo, sizeof(FSINFO)) == NO_ERROR)
@@ -8142,48 +8126,31 @@
 
 			folder[0] = name[6] = 'A' + drive;
 
-			dw_mutex_lock(mtx);
-			if(!*tree)
-			{
-				free(tree);
-				dw_mutex_close(mtx);
-				return;
-			}
-
-			items[drive] = dw_tree_insert(*tree, name, WinLoadFileIcon(folder, TRUE), NULL, 0);
-			tempitem = dw_tree_insert(*tree, "", 0, items[drive], 0);
-			dw_tree_set_data(*tree, items[drive], (void *)tempitem);
-
-			dw_mutex_unlock(mtx);
+			items[drive] = dw_tree_insert(tree, name, WinLoadFileIcon(folder, TRUE), NULL, 0);
+			tempitem = dw_tree_insert(tree, "", 0, items[drive], 0);
+			dw_tree_set_data(tree, items[drive], (void *)tempitem);
 		}
 		else
 			items[drive] = 0;
 	}
+	dw_mutex_unlock(mtx);
+
 	DosError(FERR_ENABLEHARDERR);
-
-	dw_mutex_lock(mtx);
-	if(!*tree)
-	{
-		free(tree);
-		dw_mutex_close(mtx);
-	}
 }
 
 int DWSIGNAL _dw_ok_func(HWND window, void *data)
 {
 	DWDialog *dwwait = (DWDialog *)data;
-	HMTX mtx = (HMTX)dw_window_get_data(window, "_dw_mutex");
+	HMTX mtx = (HMTX)dw_window_get_data((HWND)dwwait->data, "_dw_mutex");
 	void *treedata;
-	HWND *tree;
-
+
+	window = window;
 	if(!dwwait)
 		return FALSE;
 
 	dw_mutex_lock(mtx);
 	treedata = dw_window_get_data((HWND)dwwait->data, "_dw_tree_selected");
-	if((tree = (HWND *)dw_window_get_data((HWND)dwwait->data, "_dw_tree")) != 0)
-		*tree = 0;
-	dw_mutex_unlock(mtx);
+	dw_mutex_close(mtx);
 	dw_window_destroy((HWND)dwwait->data);
 	dw_dialog_dismiss((DWDialog *)data, treedata);
 	return FALSE;
@@ -8192,16 +8159,14 @@
 int DWSIGNAL _dw_cancel_func(HWND window, void *data)
 {
 	DWDialog *dwwait = (DWDialog *)data;
-	HMTX mtx = (HMTX)dw_window_get_data(window, "_dw_mutex");
-	HWND *tree;
-
+	HMTX mtx = (HMTX)dw_window_get_data((HWND)dwwait->data, "_dw_mutex");
+
+	window = window;
 	if(!dwwait)
 		return FALSE;
 
 	dw_mutex_lock(mtx);
-	if((tree = (HWND *)dw_window_get_data((HWND)dwwait->data, "_dw_tree")) != 0)
-		*tree = 0;
-	dw_mutex_unlock(mtx);
+	dw_mutex_close(mtx);
 	dw_window_destroy((HWND)dwwait->data);
 	dw_dialog_dismiss((DWDialog *)data, NULL);
 	return FALSE;
@@ -8250,22 +8215,20 @@
 
 int DWSIGNAL _tree_expand(HWND window, HTREEITEM item, void *data)
 {
-	DWDialog *dwwait = (DWDialog *)data;
-	HMTX mtx = (HMTX)dw_window_get_data(window, "_dw_mutex");
-	HWND *tree = (HWND *)dw_window_get_data((HWND)dwwait->data, "_dw_tree");
-	HTREEITEM tempitem = (HTREEITEM)dw_tree_get_data(*tree, item);
-
+	HTREEITEM tempitem = (HTREEITEM)dw_tree_get_data(window, item);
+
+	data = data;
 	if(tempitem)
 	{
-		char *folder = _tree_folder(*tree, item);
-
-		dw_tree_set_data(*tree, item, 0);
-		dw_tree_delete(*tree, tempitem);
+		char *folder = _tree_folder(window, item);
+
+		dw_tree_set_data(window, item, 0);
+		dw_tree_delete(window, tempitem);
 
 		if(*folder)
 		{
 			strcat(folder, "*");
-			_populate_directory(mtx, tree, item, folder);
+			_populate_directory(window, item, folder);
 		}
 		free(folder);
 	}
@@ -8289,7 +8252,7 @@
 {
 	if(flags == DW_DIRECTORY_OPEN)
 	{
-		HWND window, hbox, vbox, tree, button, *ptr;
+		HWND window, hbox, vbox, tree, button;
 		DWDialog *dwwait;
 		HMTX mtx = dw_mutex_new();
 
@@ -8302,10 +8265,8 @@
 		tree = dw_tree_new(60);
 
 		dw_box_pack_start(vbox, tree, 1, 1, TRUE, TRUE, 0);
-		ptr = malloc(sizeof(HWND));
-		*ptr = tree;
-		dw_window_set_data(window, "_dw_tree", (void *)ptr);
 		dw_window_set_data(window, "_dw_mutex", (void *)mtx);
+		dw_window_set_data(window, "_dw_tree", (void *)tree);
 
 		hbox = dw_box_new(DW_HORZ, 0);