rem: menu->timestamp = MAX(stat_buf.st_mtime, WDRootMenu->timestamp);
add: menu->timestamp = WMAX(stat_buf.st_mtime, WDRootMenu->timestamp);
context: configureMenu(WScreen *scr, proplist_t definition){    WMenu *menu = NULL;    proplist_t elem;    int i, count;    proplist_t title, command, params;    char *tmp, *mtitle;        if (PLIsString(definition)) {	struct stat stat_buf;	char *path = NULL;	Bool menu_is_default = False;	/* menu definition is a string. Probably a path, so parse the file */	tmp = wexpandpath(PLGetString(definition));	path = getLocalizedMenuFile(tmp);	if (!path)	    path = wfindfile(DEF_CONFIG_PATHS, tmp);	if (!path) {	    path = wfindfile(DEF_CONFIG_PATHS, DEF_MENU_FILE);	    menu_is_default = True;	}	if (!path) {	    wsyserror(_("could not find menu file \"%s\" referenced in WMRootMenu"),		     tmp);	    wfree(tmp);	    return NULL;	}	if (stat(path, &stat_buf)<0) {	    wsyserror(_("could not access menu \"%s\" referenced in WMRootMenu"), path);	    wfree(path);	    wfree(tmp);	    return NULL;	}	if (!scr->root_menu || stat_buf.st_mtime > scr->root_menu->timestamp	    /* if the pointer in WMRootMenu has changed */	    || WDRootMenu->timestamp > scr->root_menu->timestamp) {	    	    if (menu_is_default) {		wwarning(_("using default menu file \"%s\" as the menu referenced in WMRootMenu could not be found "),			 path);	    }	    menu = readMenuFile(scr, path);	    if (menu)		menu->timestamp = MAX(stat_buf.st_mtime, WDRootMenu->timestamp);	} else {	    menu = NULL;	}	wfree(path);	wfree(tmp);	return menu;    }    count = PLGetNumberOfElements(definition);    if (count==0)	return NULL;    elem = PLGetArrayElement(definition, 0);    if (!PLIsString(elem)) {	tmp = PLGetDescription(elem);	wwarning(_("%s:format error in root menu configuration \"%s\""), 		 "WMRootMenu", tmp);	wfree(tmp);	return NULL;    }    mtitle = PLGetString(elem);        menu = wMenuCreate(scr, mtitle, False);    menu->on_destroy = removeShortcutsForMenu;#ifdef GLOBAL_SUBMENU_FILE    {	WMenu *submenu;	WMenuEntry *mentry;	submenu = readMenuFile(scr, GLOBAL_SUBMENU_FILE);	if (submenu) {	    mentry = wMenuAddCallback(menu, submenu->frame->title, NULL, NULL);	    wMenuEntrySetCascade(menu, mentry, submenu);	}    }#endif    for (i=1; i<count; i++) {	elem = PLGetArrayElement(definition, i);#if 0	if (PLIsString(elem)) {	    char *file;	    	    file = PLGetString(elem);	    	}#endif		if (!PLIsArray(elem) || PLGetNumberOfElements(elem) < 2)	    goto error;		if (PLIsArray(PLGetArrayElement(elem,1))) {	    WMenu *submenu;	    WMenuEntry *mentry;	    	    /* submenu */	    submenu = configureMenu(scr, elem);	    if (submenu) {		mentry = wMenuAddCallback(menu, submenu->frame->title, NULL, 					  NULL);		wMenuEntrySetCascade(menu, mentry, submenu);	    }	} else {	    int idx = 0;	    char *shortcut;	    /* normal entry */	    title = PLGetArrayElement(elem, idx++);	    shortcut = PLGetArrayElement(elem, idx++);	    if (strcmp(PLGetString(shortcut), "SHORTCUT")==0) {		shortcut = PLGetArrayElement(elem, idx++);		command = PLGetArrayElement(elem, idx++);	    } else {		command = shortcut;		shortcut = NULL;	    }	    params = PLGetArrayElement(elem, idx++);	    if (!title || !command)		goto error;	    	    addMenuEntry(menu, PLGetString(title), 			 shortcut ? PLGetString(shortcut) : NULL, 			 PLGetString(command),			 params ? PLGetString(params) : NULL, "WMRootMenu");	}	continue;      error:	tmp = PLGetDescription(elem);	wwarning(_("%s:format error in root menu configuration \"%s\""), 		 "WMRootMenu", tmp);	wfree(tmp);    }        return menu;}