Date: Mon, 3 Nov 2014 09:05:26 +0100 From: Mateusz Guzik <mjguzik@gmail.com> To: Tiwei Bie <btw@mail.ustc.edu.cn> Cc: freebsd-hackers@freebsd.org Subject: Re: [PATCH] Finish the task 'sysctl reporting current working directory' Message-ID: <20141103080526.GE29497@dft-labs.eu> In-Reply-To: <20141103064052.GA1739@freebsd> References: <1414987325-23280-1-git-send-email-btw@mail.ustc.edu.cn> <20141103051908.GC29497@dft-labs.eu> <20141103064052.GA1739@freebsd>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Nov 03, 2014 at 02:40:52PM +0800, Tiwei Bie wrote: Kernel patch is ok. > > #2. Patch for tmux: > > diff --git a/osdep-freebsd.c b/osdep-freebsd.c > index d596eab..4178f01 100644 > --- a/osdep-freebsd.c > +++ b/osdep-freebsd.c > @@ -132,6 +132,46 @@ error: > return (NULL); > } > > +#ifdef KERN_PROC_CWD > +char * > +osdep_get_cwd(int fd) > +{ > + static char wd[PATH_MAX]; > + pid_t pgrp; > + int mib[4]; > + size_t len; > + struct kinfo_file *info; > + char *buf; > + int error; > + > + if ((pgrp = tcgetpgrp(fd)) == -1) > + return (NULL); > + > + mib[0] = CTL_KERN; > + mib[1] = KERN_PROC; > + mib[2] = KERN_PROC_CWD; Take a look at osdep-openbsd. This should be done along with declaration. > + mib[3] = pgrp; > + > + error = sysctl(mib, 4, NULL, &len, NULL, 0); > + if (error) > + return (NULL); > + > + buf = malloc(len); > + if (buf == NULL) > + return (NULL); > + error = sysctl(mib, 4, buf, &len, NULL, 0); > + if (error) { > + free(buf); > + return (NULL); > + } > + > + info = (struct kinfo_file *)buf; > + strlcpy(wd, info->kf_path, sizeof wd); > + > + free(buf); Why? Just have static kinfo_file. There is no need to allocate or copy anything, nor to query for size. > + return (wd); > +} > +#else /* !KERN_PROC_CWD */ > char * > osdep_get_cwd(int fd) > { > @@ -157,6 +197,7 @@ osdep_get_cwd(int fd) > free(info); > return (NULL); > } > +#endif /* KERN_PROC_CWD */ > > struct event_base * > osdep_event_init(void) > -- > 2.1.0 > > Tiwei Bie > -- Mateusz Guzik <mjguzik gmail.com>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20141103080526.GE29497>