diff options
author | Christopher Faylor <me@cgf.cx> | 2002-06-30 17:05:48 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2002-06-30 17:05:48 +0000 |
commit | ccacec81dbe42adbb78fd7399c69a900ac8a5859 (patch) | |
tree | b613fe19d33adc437923d9326575d4f02be494a3 | |
parent | c6d90e842ceceb37ff82dfd88dcaab46e4e80bf9 (diff) | |
download | newlib-ccacec81dbe42adbb78fd7399c69a900ac8a5859.zip newlib-ccacec81dbe42adbb78fd7399c69a900ac8a5859.tar.gz newlib-ccacec81dbe42adbb78fd7399c69a900ac8a5859.tar.bz2 |
* fhandler.h (fhandler_process::p): New field.
(fhandler_process:fill_filebuf): Revert to same definition as virtual in parent
class.
(fhandler_process::open): Fill out p field rather than passing as an argument.
(fhandler_process::fill_filebuf): Use p pointer rather than argument.
-rw-r--r-- | winsup/cygwin/ChangeLog | 9 | ||||
-rw-r--r-- | winsup/cygwin/fhandler.h | 3 | ||||
-rw-r--r-- | winsup/cygwin/fhandler_process.cc | 34 |
3 files changed, 29 insertions, 17 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 6aabfab..cb7448b 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,12 @@ +2002-06-30 Christopher Faylor <cgf@redhat.com> + + * fhandler.h (fhandler_process::p): New field. + (fhandler_process:fill_filebuf): Revert to same definition as virtual + in parent class. + (fhandler_process::open): Fill out p field rather than passing as an + argument. + (fhandler_process::fill_filebuf): Use p pointer rather than argument. + 2002-06-29 Pierre Humblet <pierre.humblet@ieee.org> * security.cc (extract_nt_dom_user): Check for all buffer overflows. diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h index e0521d4..d04966a 100644 --- a/winsup/cygwin/fhandler.h +++ b/winsup/cygwin/fhandler.h @@ -1128,13 +1128,14 @@ class fhandler_registry: public fhandler_proc struct _pinfo; class fhandler_process: public fhandler_proc { + pinfo *p; public: fhandler_process (); int exists(); struct dirent *readdir (DIR *); int open (path_conv *real_path, int flags, mode_t mode = 0); int __stdcall fstat (struct __stat64 *buf, path_conv *) __attribute__ ((regparm (3))); - void fill_filebuf (pinfo& p); + void fill_filebuf (); }; typedef union diff --git a/winsup/cygwin/fhandler_process.cc b/winsup/cygwin/fhandler_process.cc index 86393db..f2b8963 100644 --- a/winsup/cygwin/fhandler_process.cc +++ b/winsup/cygwin/fhandler_process.cc @@ -227,12 +227,14 @@ fhandler_process::open (path_conv *pc, int flags, mode_t mode) } fileid = process_file_no; - fill_filebuf (p); + this->p = &p; + fill_filebuf (); if (flags & O_APPEND) position = filesize; else position = 0; + this->p = NULL; } success: @@ -245,7 +247,7 @@ out: } void -fhandler_process::fill_filebuf (pinfo& p) +fhandler_process::fill_filebuf () { switch (fileid) { @@ -262,22 +264,22 @@ fhandler_process::fill_filebuf (pinfo& p) switch (fileid) { case PROCESS_PPID: - num = p->ppid; + num = (*p)->ppid; break; case PROCESS_UID: - num = p->uid; + num = (*p)->uid; break; case PROCESS_PGID: - num = p->pgid; + num = (*p)->pgid; break; case PROCESS_SID: - num = p->sid; + num = (*p)->sid; break; case PROCESS_GID: - num = p->gid; + num = (*p)->gid; break; case PROCESS_CTTY: - num = p->ctty; + num = (*p)->ctty; break; default: // what's this here for? num = 0; @@ -291,11 +293,11 @@ fhandler_process::fill_filebuf (pinfo& p) { if (!filebuf) filebuf = (char *) cmalloc (HEAP_BUF, bufalloc = MAX_PATH); - if (p->process_state & (PID_ZOMBIE | PID_EXITED)) + if ((*p)->process_state & (PID_ZOMBIE | PID_EXITED)) strcpy (filebuf, "<defunct>"); else { - mount_table->conv_to_posix_path (p->progname, filebuf, 1); + mount_table->conv_to_posix_path ((*p)->progname, filebuf, 1); int len = strlen (filebuf); if (len > 4) { @@ -311,16 +313,16 @@ fhandler_process::fill_filebuf (pinfo& p) { if (!filebuf) filebuf = (char *) cmalloc (HEAP_BUF, bufalloc = 40); - __small_sprintf (filebuf, "%d\n", p->dwProcessId); + __small_sprintf (filebuf, "%d\n", (*p)->dwProcessId); filesize = strlen (filebuf); break; } case PROCESS_WINEXENAME: { - int len = strlen (p->progname); + int len = strlen ((*p)->progname); if (!filebuf) filebuf = (char *) cmalloc (HEAP_BUF, bufalloc = (len + 2)); - strcpy (filebuf, p->progname); + strcpy (filebuf, (*p)->progname); filebuf[len] = '\n'; filesize = len + 1; break; @@ -329,21 +331,21 @@ fhandler_process::fill_filebuf (pinfo& p) { if (!filebuf) filebuf = (char *) cmalloc (HEAP_BUF, bufalloc = 2048); - filesize = format_process_status (p, filebuf, bufalloc); + filesize = format_process_status ((*p), filebuf, bufalloc); break; } case PROCESS_STAT: { if (!filebuf) filebuf = (char *) cmalloc (HEAP_BUF, bufalloc = 2048); - filesize = format_process_stat (p, filebuf, bufalloc); + filesize = format_process_stat ((*p), filebuf, bufalloc); break; } case PROCESS_STATM: { if (!filebuf) filebuf = (char *) cmalloc (HEAP_BUF, bufalloc = 2048); - filesize = format_process_statm (p, filebuf, bufalloc); + filesize = format_process_statm ((*p), filebuf, bufalloc); break; } } |