Hi,

I have a small patch (against 8.0-RELEASE-p2) that _should_ implement
the /proc/pid/environ file
under linprocfs.
However, it seems it does not work properly but I don't know what I'm
doing wrong.
Is this list the place to ask for help? I tried in the forums[1] but
got no answer.

Don't we have a 'kernel newbies'-like list?

Thanks in advance.

[1] http://forums.freebsd.org/showthread.php?t=11329

--- sys/compat/linprocfs/linprocfs.c.orig       2009-10-25 02:10:29.000000000 
+0100
+++ sys/compat/linprocfs/linprocfs.c    2010-02-16 19:38:36.000000000 +0100
@@ -939,8 +939,38 @@
 static int
 linprocfs_doprocenviron(PFS_FILL_ARGS)
 {
+       int i, error;
+       struct ps_strings pss;
+       char **ps_envstr;

-       sbuf_printf(sb, "doprocenviron\n%c", '\0');
+       PROC_LOCK(p);
+       if (p_cansee(td, p) != 0)
+               return (0);
+       PROC_UNLOCK(p);
+
+       error = copyin((void *)p->p_sysent->sv_psstrings, &pss,
+                                           sizeof(pss));
+       if (error)
+               return (error);
+
+       ps_envstr = malloc(pss.ps_nenvstr * sizeof(char *),
+           M_TEMP, M_WAITOK);
+
+       error = copyin((void *)pss.ps_envstr, ps_envstr,
+           pss.ps_nenvstr * sizeof(char *));
+
+       if (error) {
+               free(ps_envstr, M_TEMP);
+               return (error);
+       }
+
+       /* NULL separated list of variable=value pairs */
+       
+       for (i = 0; i < pss.ps_nenvstr; i++) {
+               sbuf_copyin(sb, ps_envstr[i], 0);
+       }
+
+       free(ps_envstr, M_TEMP);
        return (0);
 }
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"

Reply via email to