From 52d6d76c34ca6066472ca0835605fb4c1a1ff0e3 Mon Sep 17 00:00:00 2001 From: Mario Fetka Date: Tue, 26 May 2026 17:34:52 +0200 Subject: [PATCH] Debug MAP --- src/connect.c | 11 +++++++++++ src/namspace.c | 42 +++++++++++++++++++++++++++++++++++++++--- 2 files changed, 50 insertions(+), 3 deletions(-) diff --git a/src/connect.c b/src/connect.c index 4b1a6c1..424ef31 100644 --- a/src/connect.c +++ b/src/connect.c @@ -2563,6 +2563,9 @@ int nw_dir_get_vol_path(int dirhandle, uint8 *path) ? &(dirs[dirhandle-1]) : NULL; if (dir && dir->inode) { + XDPRINTF((3,0,"MAPDEBUG nw_dir_get_vol_path handle=%d vol=%d path=`%s` drive=%d task=%d temp=%d inode=0x%x", + dirhandle, dir->volume, dir->path ? (char*)dir->path : "", + dir->drive, dir->task, dir->is_temp, dir->inode)); int llen = strlen(dir->path); uint8 *p = path+llen; result = dir->volume; @@ -2706,6 +2709,10 @@ int alter_dir_handle(int targetdir, int volume, uint8 *path, if (targetdir > 0 && --targetdir < used_dirs && dirs[targetdir].is_temp != 2) { /* do not change special temphandles */ + XDPRINTF((3,0,"MAPDEBUG Change dhandle:%d(%d) -> '%d:%s' dev=0x%x inode=0x%x old='%d:%s' olddrive=%d oldtask=%d", + targetdir+1, task, volume, path, dev, inode, + dirs[targetdir].volume, dirs[targetdir].path ? (char*)dirs[targetdir].path : "", + dirs[targetdir].drive, dirs[targetdir].task)); XDPRINTF((5,0,"Change dhandle:%d(%d) -> '%d:%s'", targetdir+1, task, volume, path)); return(change_dir_entry(&dirs[targetdir], @@ -2723,9 +2730,12 @@ int nw_set_dir_handle(int targetdir, int dir_handle, NW_PATH nwpath; struct stat stbuff; int inode = conn_get_kpl_path(&nwpath, &stbuff, dir_handle, data, len, 1); + XDPRINTF((3,0,"MAPDEBUG nw_set_dir_handle target=%d source=%d len=%d task=%d resolved=%s inode=0x%x", + targetdir, dir_handle, len, task, conn_get_nwpath_name(&nwpath), inode)); if (inode > -1) inode = alter_dir_handle(targetdir, nwpath.volume, nwpath.path, stbuff.st_dev, stbuff.st_ino, task); + XDPRINTF((3,0,"MAPDEBUG nw_set_dir_handle result=0x%x target=%d", inode, targetdir)); return(inode); /* invalid PATH */ } @@ -2790,6 +2800,7 @@ int nw_get_directory_path(int dir_handle, uint8 *name, int size_name) } else result= -0x9c; /* wrong path */ } else result = -0x98; } + XDPRINTF((3,0,"MAPDEBUG nw_get_directory_path:%s: Handle=%d, result=0x%x", name, dir_handle+1, result)); XDPRINTF((5,0,"nw_get_directory_path:%s: Handle=%d, result=0x%x", name, dir_handle+1, result)); return(result); } diff --git a/src/namspace.c b/src/namspace.c index 0b5c437..d0260ae 100644 --- a/src/namspace.c +++ b/src/namspace.c @@ -701,6 +701,8 @@ static uint32 name_2_base(N_NW_PATH *nwpath, int namespace, int no_stat) nwpath->statb.st_ino, &dnm); } + XDPRINTF((4, 0, "MAPDEBUG name_2_base ns=%d no_stat=%d path=%s -> base=0x%lx", + namespace, no_stat, debug_nwpath_name(nwpath), (unsigned long)basehandle)); return(basehandle); } @@ -796,7 +798,10 @@ static int find_base_entry(int volume, uint32 basehandle) static int insert_get_base_entry(N_NW_PATH *nwpath, int namespace, int creatmode) { - uint32 basehandle = name_2_base(nwpath, namespace, 0); + uint32 basehandle; + XDPRINTF((3, 0, "MAPDEBUG insert_get_base_entry ENTER ns=%d creatmode=0x%x path=%s", + namespace, creatmode, debug_nwpath_name(nwpath))); + basehandle = name_2_base(nwpath, namespace, 0); if (!basehandle && creatmode) { /* now creat the entry (file or dir) */ int result = 0; char *unname = nwpath_2_unix(nwpath, 2); @@ -834,9 +839,15 @@ static int insert_get_base_entry(N_NW_PATH *nwpath, } } /* now i know that it's a new base entry */ - return(add_dbe_entry(namespace, nwpath->volume, - basehandle, nwpath->path, &(nwpath->statb))); + { + int dbg_result = add_dbe_entry(namespace, nwpath->volume, + basehandle, nwpath->path, &(nwpath->statb)); + XDPRINTF((3, 0, "MAPDEBUG insert_get_base_entry NEW path=%s base=0x%lx result=%d", + debug_nwpath_name(nwpath), (unsigned long)basehandle, dbg_result)); + return(dbg_result); + } } + XDPRINTF((3, 0, "MAPDEBUG insert_get_base_entry FAIL path=%s", debug_nwpath_name(nwpath))); return(-0xff); /* invalid path = -0x9c, -0xff no matching files */ } @@ -859,6 +870,12 @@ static int build_base(int namespace, N_NW_PATH loc_nwpath; N_NW_PATH *nwpath=&loc_nwpath; init_nwpath(nwpath, namespace); + + XDPRINTF((3, 0, + "MAPDEBUG build_base ENTER ns=%d flag=0x%x volume=%d base0=0x%02x base32=0x%lx mode=%d pathes=`%s`", + namespace, (int)nwp->flag, (int)nwp->volume, (unsigned)nwp->base[0], + (unsigned long)GET_32(nwp->base), mode, pathes ? (char*)pathes : "")); + if (!nwp->flag) { /* short directory handle */ result=nw_dir_get_vol_path((int)nwp->base[0], nwpath->path); if (result > -1){ @@ -906,6 +923,17 @@ static int build_base(int namespace, result = insert_get_base_entry(nwpath, namespace, 0); } } + if (result > -1) { + DIR_BASE_ENTRY *dbg_dbe = dir_base[result]; + XDPRINTF((3, 0, + "MAPDEBUG build_base LEAVE result=%d basehandle=0x%lx path=%s rets=`%s`", + result, dbg_dbe ? (unsigned long)dbg_dbe->basehandle : 0UL, + dbg_dbe ? debug_nwpath_name(&(dbg_dbe->nwpath)) : (uint8*)"", + rets ? (char*)rets : "")); + } else { + XDPRINTF((3, 0, "MAPDEBUG build_base LEAVE result=-0x%x rets=`%s`", + -result, rets ? (char*)rets : "")); + } return(result); } @@ -1038,6 +1066,10 @@ int nw_generate_dir_path(int namespace, } else { U32_TO_32(dbe->basehandle, dos_dir_base); } + XDPRINTF((3, 0, "MAPDEBUG nw_generate_dir_path ns=%d flag=0x%x vol=%d inbase=0x%lx path=%s result=%d nsbase=0x%lx dosbase=0x%lx", + namespace, (int)nwp->flag, (int)nwp->volume, (unsigned long)GET_32(nwp->base), + debug_nwpath_name(&(dbe->nwpath)), result, (unsigned long)dbe->basehandle, + (unsigned long)GET_32(dos_dir_base))); XDPRINTF((4, 0, "nw_generate_dir_path path=%s, result=%d, basehandle=0x%x", debug_nwpath_name(&(dbe->nwpath)), result, dbe->basehandle)); result= dbe->nwpath.volume; @@ -2313,6 +2345,10 @@ static int nw_get_full_path_cookies(int namespace, int result = build_base(namespace, nwp, nwp->pathes, 0, NULL, 0); if (result > -1) { DIR_BASE_ENTRY *dbe=dir_base[result]; + XDPRINTF((3, 0, "MAPDEBUG nw_get_full_path_cookies ns=%d destns=%d flag=0x%x vol=%d inbase=0x%lx dbe_base=0x%lx path=%s", + namespace, destnamspace, (int)nwp->flag, (int)nwp->volume, + (unsigned long)GET_32(nwp->base), (unsigned long)dbe->basehandle, + debug_nwpath_name(&(dbe->nwpath)))); uint8 *p = componentpath; uint8 *lastpp = dbe->nwpath.path+strlen(dbe->nwpath.path); int len=0;