Linux-Development-Sys Digest #676, Volume #8     Sun, 29 Apr 01 09:13:08 EDT

Contents:
  buffer cache ("Zhiyong Xu")
  How to write to file in Linux Kernel (wdz)
  More on reading ethernet frames ("Cameron Kerr")
  Re: sockets ("Darren")
  Problem linking a program HELP! (Jose Antonio Cortijo Solera)
  Re: Kernel 2.4.4 Problems ("Emu")
  Re: sockets ("Cameron Kerr")
  mount ("Darren")
  Re: mount ("Peter T. Breuer")

----------------------------------------------------------------------------

From: "Zhiyong Xu" <[EMAIL PROTECTED]>
Subject: buffer cache
Date: Sat, 28 Apr 2001 23:51:43 -0700

      Does all disk I/O go through buffer cache? All superblcok, inodes and
data block access must go thourgh buffer cache and can not pass it? So if OS
want to write some data to disk, it must copy to the corrsponding blocks in
buffer cache and mark it dirty, then at certain time, flush to disk?
      Is there any possibility disk I/O passby buffer cache?

      Thanks in advance.





------------------------------

From: wdz <[EMAIL PROTECTED]>
Subject: How to write to file in Linux Kernel
Date: Sun, 29 Apr 2001 01:45:21 -0400

I am working something in Linux Kernel. I just
want to write to a file when I was in kernel.
What should I do?
Thanks in advance!

        Michael


------------------------------

From: "Cameron Kerr" <[EMAIL PROTECTED]>
Subject: More on reading ethernet frames
Date: Sun, 29 Apr 2001 19:13:13 +1200

Hello, I've happily got my program reading raw ethernet
frames, using a socket( AF_PACKET, SOCK_RAW, ETH_P_ALL),
but when decoding, I occasionally get bad packets, or
possibly even network protocols that are unsupported.

This is bad, since it means that I don't know where the
next ethernet frame starts, and therefore have to abondon
decoding the data.

Does anyone know of either some real documentation for
this, other than the man page for packet?

Or does anyone know how I can distinguish the end of
a frame from the socket, or how to read a whole frame
at a time?

Thanks in advance.
-- 
Cameron Kerr -- cameron.kerr @ paradise.net.nz
Praise Slackware, our baud and saviour!
--

------------------------------

From: "Darren" <[EMAIL PROTECTED]>
Subject: Re: sockets
Date: Sun, 29 Apr 2001 08:58:35 +0100


Cameron Kerr <[EMAIL PROTECTED]> wrote in message
news:IkJG6.1701$[EMAIL PROTECTED]...
> [Posting only to this group]
>
> I found Beej's Guide to Socket Programming (or named similar)
> to be a REALLY good tutorial (so have many many other poeple).
>
> I wouldn't reccommend Unix Network Programming for someone
> just learning standard sockets, its more useful as a more
> advanced reference.

nice. is it available online?




------------------------------

From: Jose Antonio Cortijo Solera <[EMAIL PROTECTED]>
Subject: Problem linking a program HELP!
Date: Sun, 29 Apr 2001 11:27:50 +0200

Hi everybody,
trying to compile a program written en C, I receive this message and I
don't know what the hell I can do, please, HELP!
Don't worry, is like this because of I put the linker verbose to try to
find something wrong ;)
If someone want I can send him the source code and he can try to compile
it by himself, it's around 800 Kb.
Thank you very much.
//Jose

GNU ld version 2.10.91 (with BFD 2.10.1.0.2)
  Supported emulations:
   elf_i386
   i386linux
using internal linker script:
==================================================
OUTPUT_FORMAT("elf32-i386", "elf32-i386",
              "elf32-i386")
OUTPUT_ARCH(i386)
ENTRY(_start)
SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib);
SEARCH_DIR(/usr/i586-mandrake-linux/lib);
/* Do we need any of these for elf?
   __DYNAMIC = 0;    */
SECTIONS
{
  /* Read-only sections, merged into text segment: */
  . = 0x08048000 + SIZEOF_HEADERS;
  .interp     : { *(.interp)    }
  .hash          : { *(.hash)           }
  .dynsym        : { *(.dynsym)         }
  .dynstr        : { *(.dynstr)         }
  .gnu.version   : { *(.gnu.version)    }
  .gnu.version_d   : { *(.gnu.version_d)        }
  .gnu.version_r   : { *(.gnu.version_r)        }
  .rel.init      : { *(.rel.init)       }
  .rela.init     : { *(.rela.init)      }
  .rel.text      :
    {
      *(.rel.text)
      *(.rel.text.*)
      *(.rel.gnu.linkonce.t.*)
    }
  .rela.text     :
    {
      *(.rela.text)
      *(.rela.text.*)
      *(.rela.gnu.linkonce.t.*)
    }
  .rel.fini      : { *(.rel.fini)       }
  .rela.fini     : { *(.rela.fini)      }
  .rel.rodata    :
    {
      *(.rel.rodata)
      *(.rel.rodata.*)
      *(.rel.gnu.linkonce.r.*)
    }
  .rela.rodata   :
    {
      *(.rela.rodata)
      *(.rela.rodata.*)
      *(.rela.gnu.linkonce.r.*)
    }
  .rel.data      :
    {
      *(.rel.data)
      *(.rel.data.*)
      *(.rel.gnu.linkonce.d.*)
    }
  .rela.data     :
    {
      *(.rela.data)
      *(.rela.data.*)
      *(.rela.gnu.linkonce.d.*)
    }
  .rel.ctors     : { *(.rel.ctors)      }
  .rela.ctors    : { *(.rela.ctors)     }
  .rel.dtors     : { *(.rel.dtors)      }
  .rela.dtors    : { *(.rela.dtors)     }
  .rel.got       : { *(.rel.got)                }
  .rela.got      : { *(.rela.got)               }
  .rel.sdata     :
    {
      *(.rel.sdata)
      *(.rel.sdata.*)
      *(.rel.gnu.linkonce.s.*)
    }
  .rela.sdata     :
    {
      *(.rela.sdata)
      *(.rela.sdata.*)
      *(.rela.gnu.linkonce.s.*)
    }
  .rel.sbss      :
    { 
      *(.rel.sbss)
      *(.rel.sbss.*)
      *(.rel.gnu.linkonce.sb.*)
    }
  .rela.sbss     :
    {
      *(.rela.sbss)
      *(.rela.sbss.*)
      *(.rel.gnu.linkonce.sb.*)
    }
  .rel.sdata2    : 
    { 
      *(.rel.sdata2)
      *(.rel.sdata2.*)
      *(.rel.gnu.linkonce.s2.*)
    }
  .rela.sdata2   : 
    {
      *(.rela.sdata2)
      *(.rela.sdata2.*)
      *(.rela.gnu.linkonce.s2.*)
    }
  .rel.sbss2     : 
    { 
      *(.rel.sbss2)     
      *(.rel.sbss2.*)
      *(.rel.gnu.linkonce.sb2.*)
    }
  .rela.sbss2    : 
    { 
      *(.rela.sbss2)    
      *(.rela.sbss2.*)
      *(.rela.gnu.linkonce.sb2.*)
    }
  .rel.bss       : 
    { 
      *(.rel.bss)
      *(.rel.bss.*)
      *(.rel.gnu.linkonce.b.*)
    }
  .rela.bss      : 
    { 
      *(.rela.bss)
      *(.rela.bss.*)
      *(.rela.gnu.linkonce.b.*)
    }
  .rel.plt       : { *(.rel.plt)                }
  .rela.plt      : { *(.rela.plt)               }
  .init          : 
  { 
    KEEP (*(.init))
  } =0x9090
  .plt      : { *(.plt) }
  .text      :
  {
    *(.text)
    *(.text.*)
    *(.stub)
    /* .gnu.warning sections are handled specially by elf32.em.  */
    *(.gnu.warning)
    *(.gnu.linkonce.t.*)
  } =0x9090
  .fini      :
  {
    KEEP (*(.fini))
  } =0x9090
  PROVIDE (__etext = .);
  PROVIDE (_etext = .);
  PROVIDE (etext = .);
  .rodata   : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r.*) }
  .rodata1   : { *(.rodata1) }
  .sdata2   : { *(.sdata2) *(.sdata2.*) *(.gnu.linkonce.s2.*) }
  .sbss2   : { *(.sbss2) *(.sbss2.*) *(.gnu.linkonce.sb2.*) }
  /* Adjust the address for the data segment.  We want to adjust up to
     the same address within the page on the next page up.  */
  . = ALIGN(0x1000) + (. & (0x1000 - 1));
  .data    :
  {
    *(.data)
    *(.data.*)
    *(.gnu.linkonce.d.*)
    SORT(CONSTRUCTORS)
  }
  .data1   : { *(.data1) }
  .eh_frame : { KEEP (*(.eh_frame)) }
  .gcc_except_table : { *(.gcc_except_table) }
  .ctors   : 
  {
    /* gcc uses crtbegin.o to find the start of
       the constructors, so we make sure it is
       first.  Because this is a wildcard, it
       doesn't matter if the user does not
       actually link against crtbegin.o; the
       linker won't look for a file to match a
       wildcard.  The wildcard also means that it
       doesn't matter which directory crtbegin.o
       is in.  */
    KEEP (*crtbegin.o(.ctors))
    /* We don't want to include the .ctor section from
       from the crtend.o file until after the sorted ctors.
       The .ctor section from the crtend file contains the
       end of ctors marker and it must be last */
    KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))
    KEEP (*(SORT(.ctors.*)))
    KEEP (*(.ctors))
  }
   .dtors         :
  {
    KEEP (*crtbegin.o(.dtors))
    KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
    KEEP (*(SORT(.dtors.*)))
    KEEP (*(.dtors))
  }
  .got            : { *(.got.plt) *(.got) }
  .dynamic       : { *(.dynamic) }
  /* We want the small data sections together, so single-instruction
offsets
     can access them all, and initialized data all before uninitialized,
so
     we can shorten the on-disk segment size.  */
  .sdata     : 
  {
    *(.sdata) 
    *(.sdata.*)
    *(.gnu.linkonce.s.*)
  }
  _edata = .;
  PROVIDE (edata = .);
  __bss_start = .;
  .sbss      :
  {
    PROVIDE (__sbss_start = .);
    PROVIDE (___sbss_start = .);
    *(.dynsbss)
    *(.sbss)
    *(.sbss.*)
    *(.gnu.linkonce.sb.*)
    *(.scommon)
    PROVIDE (__sbss_end = .);
    PROVIDE (___sbss_end = .);
  }
  .bss       :
  {
   *(.dynbss)
   *(.bss)
   *(.bss.*)
   *(.gnu.linkonce.b.*)
   *(COMMON)
   /* Align here to ensure that the .bss section occupies space up to
      _end.  Align after .bss to ensure correct alignment even if the
      .bss section disappears because there are no input sections.  */
   . = ALIGN(32 / 8);
  }
  . = ALIGN(32 / 8);
  _end = .;
  PROVIDE (end = .);
  /* Stabs debugging sections.  */
  .stab 0 : { *(.stab) }
  .stabstr 0 : { *(.stabstr) }
  .stab.excl 0 : { *(.stab.excl) }
  .stab.exclstr 0 : { *(.stab.exclstr) }
  .stab.index 0 : { *(.stab.index) }
  .stab.indexstr 0 : { *(.stab.indexstr) }
  .comment 0 : { *(.comment) }
  /* DWARF debug sections.
     Symbols in the DWARF debugging sections are relative to the
beginning
     of the section so we begin them at 0.  */
  /* DWARF 1 */
  .debug          0 : { *(.debug) }
  .line           0 : { *(.line) }
  /* GNU DWARF 1 extensions */
  .debug_srcinfo  0 : { *(.debug_srcinfo) }
  .debug_sfnames  0 : { *(.debug_sfnames) }
  /* DWARF 1.1 and DWARF 2 */
  .debug_aranges  0 : { *(.debug_aranges) }
  .debug_pubnames 0 : { *(.debug_pubnames) }
  /* DWARF 2 */
  .debug_info     0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }
  .debug_abbrev   0 : { *(.debug_abbrev) }
  .debug_line     0 : { *(.debug_line) }
  .debug_frame    0 : { *(.debug_frame) }
  .debug_str      0 : { *(.debug_str) }
  .debug_loc      0 : { *(.debug_loc) }
  .debug_macinfo  0 : { *(.debug_macinfo) }
  /* SGI/MIPS DWARF 2 extensions */
  .debug_weaknames 0 : { *(.debug_weaknames) }
  .debug_funcnames 0 : { *(.debug_funcnames) }
  .debug_typenames 0 : { *(.debug_typenames) }
  .debug_varnames  0 : { *(.debug_varnames) }
  /* These must appear regardless of  .  */
}


==================================================
attempt to open
/usr/lib/gcc-lib/i586-mandrake-linux/2.96/../../../crt1.o succeeded
/usr/lib/gcc-lib/i586-mandrake-linux/2.96/../../../crt1.o
attempt to open
/usr/lib/gcc-lib/i586-mandrake-linux/2.96/../../../crti.o succeeded
/usr/lib/gcc-lib/i586-mandrake-linux/2.96/../../../crti.o
attempt to open /usr/lib/gcc-lib/i586-mandrake-linux/2.96/crtbegin.o
succeeded
/usr/lib/gcc-lib/i586-mandrake-linux/2.96/crtbegin.o
attempt to open csim.o succeeded
csim.o
attempt to open gui.o succeeded
gui.o
attempt to open /usr/lib/libgtk.so succeeded
-lgtk (/usr/lib/libgtk.so)
attempt to open /usr/lib/libgdk.so succeeded
-lgdk (/usr/lib/libgdk.so)
attempt to open /usr/lib/libgmodule.so succeeded
-lgmodule (/usr/lib/libgmodule.so)
attempt to open /usr/lib/libglib.so succeeded
-lglib (/usr/lib/libglib.so)
attempt to open /usr/lib/libdl.so succeeded
-ldl (/usr/lib/libdl.so)
attempt to open /usr/lib/libXi.so failed
attempt to open /usr/lib/libXi.a failed
attempt to open ./trivialgfx/lib/libXi.so failed
attempt to open ./trivialgfx/lib/libXi.a failed
attempt to open ./lib/libXi.so failed
attempt to open ./lib/libXi.a failed
attempt to open /usr/lib/libXi.so failed
attempt to open /usr/lib/libXi.a failed
attempt to open /usr/X11R6/lib/libXi.so succeeded
-lXi (/usr/X11R6/lib/libXi.so)
attempt to open /usr/lib/libXext.so failed
attempt to open /usr/lib/libXext.a failed
attempt to open ./trivialgfx/lib/libXext.so failed
attempt to open ./trivialgfx/lib/libXext.a failed
attempt to open ./lib/libXext.so failed
attempt to open ./lib/libXext.a failed
attempt to open /usr/lib/libXext.so failed
attempt to open /usr/lib/libXext.a failed
attempt to open /usr/X11R6/lib/libXext.so succeeded
-lXext (/usr/X11R6/lib/libXext.so)
attempt to open /usr/lib/libX11.so failed
attempt to open /usr/lib/libX11.a failed
attempt to open ./trivialgfx/lib/libX11.so failed
attempt to open ./trivialgfx/lib/libX11.a failed
attempt to open ./lib/libX11.so failed
attempt to open ./lib/libX11.a failed
attempt to open /usr/lib/libX11.so failed
attempt to open /usr/lib/libX11.a failed
attempt to open /usr/X11R6/lib/libX11.so succeeded
-lX11 (/usr/X11R6/lib/libX11.so)
attempt to open /usr/lib/libX11.so failed
attempt to open /usr/lib/libX11.a failed
attempt to open ./trivialgfx/lib/libX11.so failed
attempt to open ./trivialgfx/lib/libX11.a failed
attempt to open ./lib/libX11.so failed
attempt to open ./lib/libX11.a failed
attempt to open /usr/lib/libX11.so failed
attempt to open /usr/lib/libX11.a failed
attempt to open /usr/X11R6/lib/libX11.so succeeded
-lX11 (/usr/X11R6/lib/libX11.so)
attempt to open /usr/lib/libtgi.so failed
attempt to open /usr/lib/libtgi.a failed
attempt to open ./trivialgfx/lib/libtgi.so failed
attempt to open ./trivialgfx/lib/libtgi.a succeeded
(./trivialgfx/lib/libtgi.a)tgiCreate.o
(./trivialgfx/lib/libtgi.a)tgiSetCurrent.o
(./trivialgfx/lib/libtgi.a)tgiSetColour.o
(./trivialgfx/lib/libtgi.a)tgiPrimitives.o
(./trivialgfx/lib/libtgi.a)tgiDelete.o
(./trivialgfx/lib/libtgi.a)tgiShow.o
attempt to open /usr/lib/libsimg.so failed
attempt to open /usr/lib/libsimg.a failed
attempt to open ./trivialgfx/lib/libsimg.so failed
attempt to open ./trivialgfx/lib/libsimg.a failed
attempt to open ./lib/libsimg.so failed
attempt to open ./lib/libsimg.a succeeded
(./lib/libsimg.a)environg.o
(./lib/libsimg.a)robotg.o
(./lib/libsimg.a)geom.o
(./lib/libsimg.a)param.o
(./lib/libsimg.a)light.o
(./lib/libsimg.a)wall.o
(./lib/libsimg.a)sobst.o
(./lib/libsimg.a)obst.o
(./lib/libsimg.a)motor.o
(./lib/libsimg.a)zone.o
(./lib/libsimg.a)gripperrobot.o
(./lib/libsimg.a)aravq.o
(./lib/libsimg.a)vectorlist.o
(./lib/libsimg.a)vector.o
attempt to open /usr/lib/libpthread.so succeeded
-lpthread (/usr/lib/libpthread.so)
attempt to open /usr/lib/libdl.so succeeded
-ldl (/usr/lib/libdl.so)
attempt to open /usr/lib/libstdc++.so failed
attempt to open /usr/lib/libstdc++.a failed
attempt to open ./trivialgfx/lib/libstdc++.so failed
attempt to open ./trivialgfx/lib/libstdc++.a failed
attempt to open ./lib/libstdc++.so failed
attempt to open ./lib/libstdc++.a failed
attempt to open /usr/lib/libstdc++.so failed
attempt to open /usr/lib/libstdc++.a failed
attempt to open /usr/X11R6/lib/libstdc++.so failed
attempt to open /usr/X11R6/lib/libstdc++.a failed
attempt to open /usr/lib/gcc-lib/i586-mandrake-linux/2.96/libstdc++.so
succeeded
-lstdc++ (/usr/lib/gcc-lib/i586-mandrake-linux/2.96/libstdc++.so)
attempt to open /usr/lib/libm.so succeeded
-lm (/usr/lib/libm.so)
attempt to open /usr/lib/libgcc.so failed
attempt to open /usr/lib/libgcc.a failed
attempt to open ./trivialgfx/lib/libgcc.so failed
attempt to open ./trivialgfx/lib/libgcc.a failed
attempt to open ./lib/libgcc.so failed
attempt to open ./lib/libgcc.a failed
attempt to open /usr/lib/libgcc.so failed
attempt to open /usr/lib/libgcc.a failed
attempt to open /usr/X11R6/lib/libgcc.so failed
attempt to open /usr/X11R6/lib/libgcc.a failed
attempt to open /usr/lib/gcc-lib/i586-mandrake-linux/2.96/libgcc.so
failed
attempt to open /usr/l/usr/bin/ld: final link failed: Bad value
ib/gcc-lib/i586-mandrake-linux/2.96/libgcc.a succeeded
attempt to open /usr/lib/libc.so succeeded
opened script file /usr/lib/libc.so
attempt to open /lib/libc.so.6 succeeded
/lib/libc.so.6
attempt to open /usr/lib/libc_nonshared.a succeeded
attempt to open /usr/lib/libgcc.so failed
attempt to open /usr/lib/libgcc.a failed
attempt to open ./trivialgfx/lib/libgcc.so failed
attempt to open ./trivialgfx/lib/libgcc.a failed
attempt to open ./lib/libgcc.so failed
attempt to open ./lib/libgcc.a failed
attempt to open /usr/lib/libgcc.so failed
attempt to open /usr/lib/libgcc.a failed
attempt to open /usr/X11R6/lib/libgcc.so failed
attempt to open /usr/X11R6/lib/libgcc.a failed
attempt to open /usr/lib/gcc-lib/i586-mandrake-linux/2.96/libgcc.so
failed
attempt to open /usr/lib/gcc-lib/i586-mandrake-linux/2.96/libgcc.a
succeeded
attempt to open /usr/lib/gcc-lib/i586-mandrake-linux/2.96/crtend.o
succeeded
/usr/lib/gcc-lib/i586-mandrake-linux/2.96/crtend.o
attempt to open
/usr/lib/gcc-lib/i586-mandrake-linux/2.96/../../../crtn.o succeeded
/usr/lib/gcc-lib/i586-mandrake-linux/2.96/../../../crtn.o
ld-linux.so.2 needed by /lib/libc.so.6
found ld-linux.so.2 at /lib/ld-linux.so.2
collect2: ld returned 1 exit status
make: *** [csim] Error 1

------------------------------

From: "Emu" <[EMAIL PROTECTED]>
Subject: Re: Kernel 2.4.4 Problems
Date: Sun, 29 Apr 2001 05:50:47 -0500

Check the file "changes" in the Documention.  you may have to update ppp. I
am not sure?  I had red hat 7.0 and I had to update my ppp for kernel 2.4.2

Hope that helped ya?

pppd 2.4.1  hm



"Fruitbat" <[EMAIL PROTECTED]> wrote in message
news:NhLG6.22885$[EMAIL PROTECTED]...
> I have just compiled the 2.4.4 kernel and have found that my pppoe based
> ADSL connection times out when attempting to connect on my RH7.1 system,
the
> system log is as follows:
>
> Apr 29 10:45:31 fruitbat pppd[1301]: Exit.
> Apr 29 10:45:57 fruitbat pppd[1351]: pppd 2.4.1 started by root, uid 0
> Apr 29 10:45:57 fruitbat pppd[1351]: Using interface ppp0
> Apr 29 10:45:57 fruitbat pppd[1351]: Connect: ppp0 <--> /dev/pts/2
> Apr 29 10:46:28 fruitbat pppd[1351]: LCP: timeout sending Config-Requests
> Apr 29 10:46:28 fruitbat pppd[1351]: Connection terminated.
> Apr 29 10:46:32 fruitbat pppoe[1352]: Timeout waiting for PADO packets
> Apr 29 10:46:32 fruitbat pppd[1351]: Exit.
>
> I have backed out to kernel 2.4.3 and everything is fine. Has anyone else
> experienced this problem with 2.4.4?
>
>
> --
> ^^Fruitbat^^
>
>



------------------------------

From: "Cameron Kerr" <[EMAIL PROTECTED]>
Subject: Re: sockets
Date: Mon, 30 Apr 2001 00:02:29 +1200

[snip]

> nice. is it available online?

Beej: http://www.ecst.csuchico.edu/~beej/guide/net/

Unix Network Programming: Only in hardcopy, AFAIK, you
can get the example source code online, however. Note
that this is the first of a three part set.
http://www.kohala.com/start/

HIH
-- 
Cameron Kerr -- cameron.kerr @ paradise.net.nz
Praise Slackware, our baud and saviour!
--

------------------------------

From: "Darren" <[EMAIL PROTECTED]>
Crossposted-To: comp.unix.programmer,linux.redhat.devel,linux.redhat.development
Subject: mount
Date: Sun, 29 Apr 2001 13:02:38 +0100

hello all.

Is there a programmatical way to mount/unmount a volume preferably in the
same way the mount gnu command does?

Thanks

Darren




------------------------------

From: "Peter T. Breuer" <[EMAIL PROTECTED]>
Crossposted-To: comp.unix.programmer,linux.redhat.devel,linux.redhat.development
Subject: Re: mount
Date: Sun, 29 Apr 2001 14:29:49 +0200

In comp.os.linux.development.system Darren <[EMAIL PROTECTED]> wrote:
> Is there a programmatical way to mount/unmount a volume preferably in the
> same way the mount gnu command does?

man 2 mount

Peter

------------------------------


** FOR YOUR REFERENCE **

The service address, to which questions about the list itself and requests
to be added to or deleted from it should be directed, is:

    Internet: [EMAIL PROTECTED]

You can send mail to the entire list by posting to the
comp.os.linux.development.system newsgroup.

Linux may be obtained via one of these FTP sites:
    ftp.funet.fi                                pub/Linux
    tsx-11.mit.edu                              pub/linux
    sunsite.unc.edu                             pub/Linux

End of Linux-Development-System Digest
******************************

Reply via email to