Date: Fri, 10 Apr 1998 22:18:22 +0000 (GMT) From: Terry Lambert <tlambert@primenet.com> To: scrappy@hub.org (The Hermit Hacker) Cc: freebsd-hackers@FreeBSD.ORG Subject: Re: filename from open file descriptor... Message-ID: <199804102218.PAA01789@usr07.primenet.com> In-Reply-To: <Pine.BSF.3.96.980410164633.290G-100000@thelab.hub.org> from "The Hermit Hacker" at Apr 10, 98 04:47:48 pm
next in thread | previous in thread | raw e-mail | index | archive | help
> I'm trying to debug some code, and have an open file descriptor > that I want to find the file name that its associated with... > > is this possible? my first thought was fstat(), but that appears > to return everything but the name :( You remember the name when you open the file. Untested: ---------------------------------------------------------------------------- /* * This code is relased under BSD licensce in the name of Terrence * Lambert. Please place appropriate license text into any released * version of this software. */ static char **saved_open_names; /* * Overrides weak "open" symbol from libc */ int open( const char *path, int flags, mode_t mode) { int rv; if( saved_open_names == NULL) { int count; count = getdtablesize(); saved_open_names = (char **)calloc( count, sizeof(char *)); } if( saved_open_names == NULL) { rv = -1; errno = ENOMEM; } else { char *p; if( ( p = strdup( path)) == NULL) { rv = -1; errno = ENOMEM; } else { if( ( rv = syscall( SYS_open, path, flags, mode)) == -1) { free( p); } else { if( saved_open_names[ rv] != NULL) { /* could implement 'close' instead...*/ free( saved_open_names[ rv]); } saved_open_names[ rv] = p; } } } return( rv); } /* * New call... */ char * fdname( int fd) { char *rv = NULL; if( saved_open_names != NULL) { if( fd >= 0 && fd < getdtablesize()) { rv = saved_open_names[ fd]; } } return( rv); } ---------------------------------------------------------------------------- Terry Lambert terry@lambert.org --- Any opinions in this posting are my own and not those of my present or previous employers. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199804102218.PAA01789>