Linux-Development-Apps Digest #285, Volume #7    Sat, 17 Mar 01 14:13:11 EST

Contents:
  Bayonne call for volunteers (David Sugar)
  Re: Dump a `top` to an unused terminal (Victor Wagner)
  Re: GPL (John Hasler)
  Re: Dynamic function availability in Linux ("Joseph A. Knapka")
  Re: Ctrl C catcher (Kaz Kylheku)
  Re: sizeof returns wrong structure size ([EMAIL PROTECTED])
  Re:  Re: Dynamic function availability in Linux ([EMAIL PROTECTED])
  Re: Retrieving a web page ("Emilien Arino")
  Re: GPL ("Tristan Wibberley")
  Re: sizeof returns wrong structure size (Grant Edwards)
  Re: GPL (Dave Blake)

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

From: David Sugar <[EMAIL PROTECTED]>
Subject: Bayonne call for volunteers
Date: Fri, 16 Mar 2001 21:27:00 -0500

Bayonne is a fairly established and ambitious free software project who's
goal, along with that of the larger GNU Telephony Project, GNUCOMM, is to
provide community supported scalable free software based telephony
solutions that are useful for individuals, for the small office and large
commercial enterprise, and for commercial carriers, that can displace the
proprietary solutions commonly used in the telecom industry today.  In
addition to being a GNU package and a part of GNUCOMM, Bayonne is also
represented within the GNU Enterprise project.

Bayonne primarily focuses on voice response and what is commonly called a
telephony "application server".  Bayonne is written in C++, has a fully
threaded architecture, and is bound together by a common scripting core
and DSO plugins.  Other parts of GNUCOMM will focus on many related and
useful areas in providing a complete free software telephony solution.

Bayonne has recently reached release 0.5.17.  This release represents a 
fairly stable and functional multi-line voice response telephony server that
already works with a fair number of single and multi-line analog (and soon
digital) telephony cards available under GNU/Linux, and that can be made
to support Voicetronix hardware under FreeBSD.  However, there are still
many areas of development that have not yet been addressed.

While Bayonne is useful today, we are certainly looking to extend Bayonne
functionality in many additional areas.  Since we already have an abstract
interface for "telephony cards", support for entirely softswitch based
sessions will be added alongside traditional multi-line telephony cards
for use in the next generation telephone network, using projects like
openh323 and vovida as the base for these new services.  This is just one
of many areas for potential and original development available within
Bayonne.

In issuing a call for volunteers, we are looking for more people to
contribute to development of the Bayonne package, both in specific niches
that have been identified, and in any other places people may identify and
wish to contribute on their own.

Currently, we both have, and need, people to volunteer with development in
several broadly defined areas.  Some of these areas are already covered to
a limited degree, but certainly can use help and input from additional
people, and in all areas new contributors can still have a substantial
impact on Bayonne development.

Current active areas of development include redundancy and telephony
cluster server farming, XML scripting, Bayonne plugins, integrating FAX,
TTS, and ASR services, CORBA, more telephony drivers, and IP trunking.  
Other areas that we need volunteers for include documentation, packaging,
web development, porting, application development, and voice library
management.

This list is not fixed, but represents how I currently divide Bayonne
development.  If people have something different and interesting to
contribute to the package, or even wish to take on a specific challenge in
the broader GNUCOMM project, that would always be welcome as well.  Those
interested can start by joining the Bayonne mailing list by sending e-mail
to [EMAIL PROTECTED] with the body of the
message being "subscribe", or by sending e-mail to me directly,
[EMAIL PROTECTED]


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

From: [EMAIL PROTECTED] (Victor Wagner)
Crossposted-To: comp.os.linux
Subject: Re: Dump a `top` to an unused terminal
Date: 16 Mar 2001 21:51:52 +0300

Genesis <[EMAIL PROTECTED]> wrote:
: Hey,
:     Can I as root send a top output to a terminal (tty6 (Ctrl+Alt+F6))
: with out a user being logged in on that terminal?
Yes you can. man 1 open

: Maybe (big maybe), hook the ``space bar'' so top can
: be updated w/o a user being logged in on that terminal?

No need to do so. top is updated automatically every n seconds.
man top

: Being what it is (Linux and Open Source) it is truly doable, however
: it is easy (maybe moderately easy?), and if so, How is it done?

Put command

open -c 6 top

somewhere in the your startup screen. Be sure to comment out entry
for getty on this console in your inittab.


-- 
I don't think I'm gonna agree with that.  Way too much visual confusion...
             -- Larry Wall in <[EMAIL PROTECTED]>

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

From: John Hasler <[EMAIL PROTECTED]>
Subject: Re: GPL
Date: Sat, 17 Mar 2001 01:49:58 GMT

Micah Cowan writes:
> Have you /read/ the GPL?

Many times.  Non-GPL != proprietary.  Here is a hint: GPL'd programs are
regularly linked to the X libraries.

> The following is at the end of it:
> This General Public License does not permit...
> ...
> ...

Preceeded on the previous page by 'END OF TERMS AND CONDITIONS'.  The text
you quote is part of a document titled 'How to Apply These Terms to Your
New Programs'.  It is not part of the license.
-- 
John Hasler
[EMAIL PROTECTED]
Dancing Horse Hill
Elmwood, Wisconsin

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

From: "Joseph A. Knapka" <[EMAIL PROTECTED]>
Subject: Re: Dynamic function availability in Linux
Date: Sat, 17 Mar 2001 03:07:32 GMT

[EMAIL PROTECTED] wrote:
> 
> Hi!
> 
> I post this message because of a recommendation in comp.lang.c (thanks!)
> 
> I'm developing some kind of server program under Linux. I would have some compiled 
>modules for that server, all them with the same function calls. The problem is that 
>when I compile main server, I don't know how many modules I will have, their names 
>(only the function names)...
> 
> Is there any mechanism I can use to call these functions one after another from 
>different modules? I need at least some indication of where to learn from (that's no 
>problem), or some program you know that does something like this and I can read its 
>source code.

I'm not sure I understand exactly what you want to do, but it sounds
like you might want to look at "man dlopen" and its friends, and
then read the GCC info pages, paying particular attention to
the "-fPIC", "-export-dynamic", and "-shared" command-line options. You
can build an executable that dynamically loads a library (or several)
containing functions that conform to a specified prototype, look up
the functions you want to call, and call them via function pointers.
Is that what you're looking for?

-- Joe
 
> Thanks in advance,
> Dani
> 
> ==================================
> Posted via http://nodevice.com
> Linux Programmer's Site

-- Joe Knapka
"It was just a maddened crocodile hidden in a flower bed. It could
 have happened to anyone." -- Pratchett
// Linux MM Documentation in progress:
// http://home.earthlink.net/~jknapka/linux-mm/vmoutline.html
* Evolution is an "unproven theory" in the same sense that gravity is. *

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

From: [EMAIL PROTECTED] (Kaz Kylheku)
Subject: Re: Ctrl C catcher
Reply-To: [EMAIL PROTECTED]
Date: Sat, 17 Mar 2001 07:46:21 GMT

On Fri, 16 Mar 2001 09:49:14 GMT, Ludwig <[EMAIL PROTECTED]> wrote:
>I'm porting a program from WIN32 to linux and came across the function
>'SetConsoleCtrlHandler'.  This function 'catches' to Ctrl C button and
>instead of breaking the program, it gets rerouted to a function. (--> very
>handy if you are doing tests and want to finish the current test before
>exiting)
>
>My question now is: how can you catch the Ctrl C being pressed, so that it
>gets rerouted to a function instead of ending the program?

Ther is an ANSI C method for doing this; namely set up a signal handler
for the SIGINT signal. It's not guaranteed that the SIGINT signal is
generated in response to the interrupt key, but it does work on UNIX
platforms as well as MS Visual C++.  For utmost portability, have your
signal handler store a value to a static object of type volatile
sig_atomic_t. Your mainline can inspect the value of that object from
time to time to discover whether the interrupt key has been pressed.

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

From: [EMAIL PROTECTED]
Subject: Re: sizeof returns wrong structure size
Date: Sat, 17 Mar 2001 08:29:59 -0000

On Sat, 17 Mar 2001 01:41:30 GMT Grant Edwards <[EMAIL PROTECTED]> wrote:

| I've spent 90% of my time dealing with frame formats that don't
| have any variable fields and would be quite happy if C structs
| could be used for that.  Variable size fields is a whole
| different problem.

While you don't need that, this is one of the reasons why it would
be very complex to go the distance to make a programming language
deal with external stuff in a declarative way.  OTOH, it is trivial
to do this procedurally.


|>[...]  Where do you draw the line and say this can be
|>implemented in the compiler with structs and that cannot?
|
| I don't think that static frame structures would require much
| effort.  I'd even give up the byte-ordering without much
| complaint. It would just nice to just get the bytes in the
| right place without so much fuss.

Well, expect to give up byte ordering.  It has never been there in
standard C and I can't see it ever happening.  As for static frame
structures, don't count on it.  You're lucky that your's are not
that complex.  But once developers start down that road, they would
be expected to make it work for ever external format, and there are
many, many reasons this becomes an insurmountable task, both for
the design of the language specification, as well as for compiler
and runtime package implementation.

BTW, memcpy is not what you'd have to do to build up the frame
structure.  If you are going to store a 4 byte number in little
endian format, then conceptually your task can be defined as such.
Some machines can't even do that if the offset isn't correctly
aligned for the machine.  Others can.  But this could be done by
defining a macro perhaps called store_long_unaligned_le().  That
macro would literally store the whole thing in the platforms in
which that is possible, and break it apart byte by byte on those
where it is not.  This it is just a matter of defining that macro
for each platform.  It would be the code the compiler would have
to generate anyway.  A full set of those macros for all different
ways to store data implemented on all platforms (little endian vs
big endian, aligned vs unaligned) could be done.  Would it be
easy?  Perhaps not.  But it wouldn't be any less work for the
compiler makers to have to do this.  They just don't have an
interest in it primarily because people do handle this kind of
thing generally very easily with code.

-- 
=================================================================
| Phil Howard - KA9WGN |   Dallas   | http://linuxhomepage.com/ |
| [EMAIL PROTECTED] | Texas, USA | http://phil.ipal.org/     |
=================================================================

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

Subject: Re:  Re: Dynamic function availability in Linux
From: [EMAIL PROTECTED]
Date: Sat, 17 Mar 2001 09:56:08 GMT

Joe Knapka wrote:

> I'm not sure I understand exactly what you want to do, but it sounds
> like you might want to look at "man dlopen" and its friends, and
> ...
> You
> can build an executable that dynamically loads a library (or several)
> containing functions that conform to a specified prototype, look up
> the functions you want to call, and call them via function pointers.
> Is that what you're looking for?

Yes, that was! :) I read man page and it looks exactly what I wanted. Thanks a lot, 
sincerely. Now I'll play a little with it and let's see...

Dani.-

==================================
Posted via http://nodevice.com
Linux Programmer's Site

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

From: "Emilien Arino" <[EMAIL PROTECTED]>
Subject: Re: Retrieving a web page
Date: Sun, 18 Mar 2001 04:08:39 +0100

> did you try hitting it from a browser at the same time, to see if it is
just
> a server error or if it is your program?
>
> it could be just that the server / page etc is having some maitainance
done
> on it - the seti people had some probs a while back with their fibre lines
> being cut - maybe they are just updating stuff!

Yes, the page works with other browsers.
And my program works on every page I tried ( with size ~< 50ko) exept this
particular one. And this is the page I want to retrieve :(



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

From: "Tristan Wibberley" <[EMAIL PROTECTED]>
Subject: Re: GPL
Date: Sat, 17 Mar 2001 15:07:26 -0000


"wiehllen" <[EMAIL PROTECTED]> wrote in message
news:98sir0$[EMAIL PROTECTED]...
> Hi,
>
> I have a general question. Normally, I have to open the source code of an
> application, if I use GPL-libraries. What can I do to avoid this, for
> example I want to write a commercial application in a company which is
> interessted in Linux, but doesnīt want to lose their research and
> development investments. The application should run on an embedded system
to
> handle i/o data. I heard that big companies use Linux as an embedded OS
for
> example in a videorecorder. I canīt believe the apps handling these
machines
> are open source. So what are my choices?

CONSULT WITH A LAWYER, I AM NOT A LAWYER (this is for my own legal
protection, I don't mean to shout).

Consult with a copyright lawyer (NOT a CONTRACT lawyer). The GNU GPL covers
copying of material only. If GPL art (eg libraries) are copied according to
the requirements laid out in the GNU GPL, you do not have to place *your*
source code under the GPL. I am not a lawyer, and you should consult with
one who is familiar with copyright law in your country. Normally, if you
distribute separate works on the same physical media as a GPL one, the GPL
is not applied to the others.

Dynamic linking to libraries involves testing that named libraries on the
build system provide certain symbols, and recording the names in the
filesystem that must provide those symbols when the program is executed. It
does not necessarily mean producing a derived work (and the GNU GPL only
covers derived works or the work itself).

If you are not convinced, produce a shared object file with the same symbols
as the GPL library, and wrap all macros and constant definitions in it's
header files with function calls (which you release under GPL (this may or
may not be required but it's safe)); check to see what parts of the original
libraries are included in your files - if none, then you are not copying any
GPLed work into your work, and are not bound by the GPL. Then you can
dynamically link with the shared object files, and distribute non-derived
works of your own creation under any terms you wish, and distribute the
original and derived works under the GNU GPL as required. You may not even
have to wrap the header file definitions - inclusion of small macros and
defined constants may be fair use in your country.

Remember to consult with a copyright lawyer!!! (USENET advise isn't worth
the paper it's not printed on, and I am not a lawyer). ie, consult a lawyer,
and take usenet with a pinch of salt. Who you gonna call? That's right... A
lawyer. There's a theme here, though I can't quite put my finger on it -
maybe if I asked a lawyer.

That's my tuppence.

--
Tristan Wibberley



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

From: [EMAIL PROTECTED] (Grant Edwards)
Subject: Re: sizeof returns wrong structure size
Date: Sat, 17 Mar 2001 16:16:04 GMT

On Fri, 16 Mar 2001 17:53:00 -0800, Erik Max Francis <[EMAIL PROTECTED]> wrote:
>Grant Edwards wrote:
>
>> There's no technical reason that structs can't be implimented
>> such that the user can control padding (or even byte order).
>
>Not if you want bus errors on some architectures.

If you're doing low level programming that requires you to know
about byte alignment and structure layout then you're
reponsible for make sure you don't have bus faults.  I'm not
talking about joe-user applications programming, I'm talking
about system code.

>There's a reason why the Standards don't specify endianness and allow
>arbitrary struct padding.  It's because it's necessary.

In your opinion.  It's just as "necessary" to not create
pointers to non-legal addresses, to not index off the end or
beginning of arrays, to not coerce data to the wrong types.  C
allows all of those in the name of flexibility for low-level
programming.

If you want a safe language, use Modula-3, Python, or (gack!
Perl).  If I'm using C it's because I need to do dangerous,
low-level stuff.  Pretending C is a safe language is idiotic.

-- 
Grant Edwards                   grante             Yow!  BEEP-BEEP!! I'm a
                                  at               '49 STUDEBAKER!!
                               visi.com            

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

From: [EMAIL PROTECTED] (Dave Blake)
Subject: Re: GPL
Date: 17 Mar 2001 17:37:37 GMT
Reply-To: [EMAIL PROTECTED]

Micah Cowan <[EMAIL PROTECTED]> wrote:

> Make sure the libraries you are referring to truly are GPL
> libraries. You are not allowed to link non-GPL code with GPL
> code, even dynamically, but LGPL-ed code allows you to
> dynamically link with it. Most libraries tend to be LGPL'd,
> though there are several that aren't (although the FSF created
> both licenses, they strongly disparage the use of the LGPL in
> general).  Glibc, for example, is LGPL'd, so you are perfectly
> fine linking proprietary code to it - thus the videorecorder,
> and TiVo examples.  Just because they /use/ Linux doesn't mean
> that they link with it, or with GPL'd libraries.

IF this were true, there could be NO program that runs under
linux that is anything but GPLd, since all programs interact
with (read link to) the kernel image. Now, the kernel
programmers have made it clear that they will allow any license
programs to use system calls under the kernel. Besides, most of
the kernel API is defined in the POSIX spec.

The claim is often made that programs using GPLd libraries need
to be GPLd if they are distributed. I do not believe this is
defensible in court, for a few reasons.

Reason 1. The only way in which a program using a GPLd library
linked dynamically is derivative is that it includes a header
file at compile time. A header file defines an API for a
library. It is MEANT to be included by others in their work.
This makes its inclusion fair use.

Reason 2. The FSF GNU GPL contains the following statement
"If identifiable sections of that work are not derived from the
Program, and can be reasonably considered independent and
separate works in themselves, then this License, and its terms,
do not apply to those sections when you distribute them as
separate works."

To me, reason 2 means that if you make a dynamically linked
program, and distribute the GPL library separately, then the
GNU GPL does not apply to your program. 

It can really boil down to whether using an API defined in a
header file is fair use or not. Or is that the "use of someone
else's copyright". In a reasonably fair world, I do not see how
that could be. For example, consider linking against ncurses.
The API was defined in curses and largely ported as it to
ncurses. Does that make ncurses a derived work ? Or a reverse
engineered work ?? That is an important distinction, because it
makes relevant whether a library's API is a more "public" part
of the code than the rest in that its inclusion is fair use. 
The same argument can be made about the kernel API, which is
largely defined in the POSIX spec. Even the opensound API is
defined across Unices. Simple use of an API is not a copyright
derived work. 

-- 
Dave Blake
[EMAIL PROTECTED]

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


** 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.apps 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-Apps Digest
******************************

Reply via email to