jcs
/wifi_da
/amendments
/40
*: Don't rely on our static wifi_da persisting
Lookup str_res_id again when creating main DA window.
    jcs made amendment 40 10 months ago
--- main.c	Tue Jan  7 15:00:05 2025
+++ main.c	Tue Jan  7 21:04:24 2025
@@ -43,7 +43,6 @@ bool handle_menu(short i);
 void handle_event(EventRecord *e);
 void handle_timer(void);
 void logger_vprintf(const char *format, va_list ap);
-void find_str_res_id(void);
 
 short
 main(cntrlParam *p, DCtlPtr d, short n)
@@ -61,7 +60,6 @@ main(cntrlParam *p, DCtlPtr d, short n)
 	if (dce == NULL) {
 		util_init(d);
 		SysEnvirons(1, &world);
-		find_str_res_id();
 	}
 	
 	dce = d;
@@ -127,7 +125,7 @@ da_open(void)
 		menu = GetMenu(menuID);
 		(**menu).menuID = menuID;
 		menu = GetMenu(menuID);
-		GetIndString(str, wifi_da.str_res_id, STR_ABOUT_WIFI_ID);
+		GetIndString(str, find_str_res_id(), STR_ABOUT_WIFI_ID);
 		SetItem(menu, MAIN_MENU_ABOUT_ID, str);
 		InsertMenu(menu, 0);
 		DrawMenuBar();
@@ -286,7 +284,7 @@ logger_printf(const char *format, ...)
 void
 logger_vprintf(const char *format, va_list ap)
 {
-	static char buf[512];
+	static char buf[256];
 	GrafPtr	savePort;
 	ssize_t len;
 	RgnHandle clip;
@@ -312,32 +310,35 @@ logger_vprintf(const char *format, va_list ap)
 	SetPort(savePort);
 }
 
-void
+short
 find_str_res_id(void)
 {
 	Handle itlb_h, str_h;
-	ItlbRecord *itlb;
-	bool found_str = false;
+	ItlbRecord itlb;
+	short str_res_id;
 
 	/* find language of this system */
-	wifi_da.str_res_id = OwnedResourceID(STR_BASE_ID);
+	str_res_id = OwnedResourceID(STR_BASE_ID);
 	itlb_h = GetResource('itlb', 0);
 	if (itlb_h != NULL) {
 		HLock(itlb_h);
-		itlb = (ItlbRecord *)(*itlb_h);
+		itlb = *(ItlbRecord *)(*itlb_h);
 		ReleaseResource(itlb_h);
 		
-		str_h = GetResource('STR#', wifi_da.str_res_id + itlb->itlbLang);
+		str_h = GetResource('STR#', str_res_id + itlb.itlbLang);
 		if (str_h != NULL) {
-			wifi_da.str_res_id += itlb->itlbLang;
+			/* we have strings in this language */
+			str_res_id += itlb.itlbLang;
 			ReleaseResource(str_h);
-			found_str = true;
+			return str_res_id;
 		}
 	}
-	if (!found_str) {
-		str_h = GetResource('STR#', wifi_da.str_res_id);
-		if (str_h == NULL)
-			panic("Can't find STR# %d", wifi_da.str_res_id);
-		ReleaseResource(str_h);
-	}
+	
+	/* fall back to english (itlbLang 0) */
+	str_h = GetResource('STR#', str_res_id);
+	if (str_h == NULL)
+		panic("Can't find STR# %d", str_res_id);
+	ReleaseResource(str_h);
+	
+	return str_res_id;
 }
\ No newline at end of file
--- wi-fi.h	Tue Jan  7 17:59:45 2025
+++ wi-fi.h	Tue Jan  7 20:53:14 2025
@@ -133,6 +133,7 @@ extern Cursor watch;
 
 void wifi_about(void);
 
+short find_str_res_id(void);
 void logger_printf(const char *format, ...);
 
 void create_window(short ctlrefnum);
--- window.c	Tue Jan  7 17:46:04 2025
+++ window.c	Tue Jan  7 21:09:30 2025
@@ -33,6 +33,7 @@ create_window(short ctlrefnum)
 	GrafPtr	savePort, tport;
 	
 	memset(&wifi_menu_networks, 0, sizeof(wifi_menu_networks));
+	wifi_da.str_res_id = find_str_res_id();
 	
 	GetPort(&savePort);