io pipe producer 1.5
IO::Pipe::Producer 1.5
IO::Pipe::Producer is a Perl module that provides two modules getSubroutineProducer and getSystemProducer. more>>
SYNOPSIS
# Module which provides 2 methods: getSubroutineProducer
# and getSystemProducer. They take a subroutine reference
# (with associated arguments) and a system call
# respectively and return (blessed) handles on their
# streaming standard output and standard error output.
# EXAMPLES of usage
use IO::Pipe::Producer;
$obj = new IO::Pipe::Producer();
$stdout_fh =
$obj->getSubroutineProducer($subroutine_reference,
@subroutine_parameters);
# OR
use IO::Pipe::Producer;
$obj = new IO::Pipe::Producer();
($stdout_fh,$stderr_fh) =
$obj->getSubroutineProducer($subroutine_reference,
@subroutine_parameters);
# OR
use IO::Pipe::Producer;
$stdout_fh = new IO::Pipe::Producer($subroutine_reference,
@subroutine_parameters);
# OR
use IO::Pipe::Producer;
($stdout_fh,$stderr_fh) =
new IO::Pipe::Producer($subroutine_reference,
@subroutine_parameters);
# Then you can read the returned handles like any other
# file handle...
while()
{print "STDOUT From Producer: $_"}
while()
{print "STDERR From Producer: $_"}
# You can also do the same thing with system calls using
# the getSystemProducer subroutine. However, this feature
# is not accessible via the new constructor
use IO::Pipe::Producer;
$obj = new IO::Pipe::Producer();
$stdout_fh =
$obj->getSystemProducer("echo "Hello World!"");
use IO::Pipe::Producer;
$obj = new IO::Pipe::Producer();
($stdout_fh,$stderr_fh) =
$obj->getSystemProducer("echo "Hello World!"");
# However, this is exactly the same as:
use IO::Pipe::Producer;
$stdout_fh = new Producer(sub{system(@_)},
"echo "Hello World!"");
# OR
use IO::Pipe::Producer;
($stdout_fh,$stderr_fh) =
new IO::Pipe::Producer(sub{system(@_)},
"echo "Hello World!"");
Pipe Viewer 1.0.1
Pipe Viewer is a pipeline data transfer meter. more>>
It can be inserted into any normal pipeline between two processes to give a visual indication of how quickly data is passing through, how long it has taken, how near to completion it is, and an estimate of how long it will be until completion.
pv is now considered to be stable code: it appears to work reliably on systems it has been tested on.
Pipepanic 0.1.3
Pipepanic is a pipe connecting game using libSDL. more>>
Comes with built-in help, is primarily mouse/stylus driven and can be played in different resolutions and orientations.
Pipe-Sem 1.0
This is a pipe based semaphore implementation for developing ASYNC applications. more>>
Pipe-Sem 1.0 is a good utility which might help you a lot in developing ASYNC applications. Many synchronization primitives are available for Unix systems, but any of them expose a pollable interface to the user. In these cases, if the caller execute a down operation on a blocking semaphore, the application will sleep and whole ASYNC loop will starve because of the wait.
To cope with this problem in ASYNC software, the publisher developed a pipe based semaphore implementation, called Pipe-Sem. The implementation is trivially simple and it uses the pipe internal mechanisms to expose a pollable wait interface.
Besides the standard semaphore operations, the function psem_down_fd() can be used to retrieve a files descriptor that can be dropped inside a Unix pollable API like select(2), poll(2) or epoll(2). The caller will have to wait for input events (POLLIN), and when receiving the event itself, the caller should invoke the psem_try_down() function to try to acquire the semaphore.
Please note that receiving an event from the pollable interface, does not mean that we acquired to semaphore, and the function psem_try_down() will have to be called (and tested for zero return code) to correctly complete the down operation.
<<lesslibCoroutine 0.9
libCoroutine is a simple stackfull coroutine implementation, largely based on ucontext and fibers. more>>
This library is built from the coroutine implementation of the Io programming language project.
LiON Library 2.1
LiON Library is a full nonblocking, single thread library with an API that is portable and easy to use. more>>
LiON Library has full network support, files, and pipes (for spawning children, or processes to communicate with). All types can also be rate (KB/s) limited, and full SSL support is included.
Main features:
- Nonblocking Networking.
- Nonblocking File I/O.
- Nonblocking pipe/system and fork commands for spawning helper programs.
- Event driven, event passback for all situations.
- SSL incorporated, with auto-detection.
- Portable (Already confirmed NetBSD, Solaris, Linux, OsX and Win32)
- Single process / thread library.
- Numerous Sample programs included.
- Support both in-library sleep/CPU-release, or in Application.
- Full buffering control, and flow control.
- CPS (KB/s) rate limits on _any_ I/O type. (Socket, File & Pipe)
- Adoptable foreign file-descriptors API.
- Clean API with documentation, although man-page comming.
- Direct, or event driven, failure modes supported.
- Exclusive File I/O locking optional, across all platforms.
- Internal compression optional.
- Very simple to use for line-by-line protocols, or binary chunk data transfers.
- Full UDP support
- Encrypted File IO support (blowfish, dependent on SSL)
- contrib/ sources include Directory listings library for all platforms.
- Python support! Using SWIG there now is an easy way to do async SSL in Python
- Timers! Callback timers in relative or absolute time. One-shot or repeat.
Enhancements:
- SSL connections could stall based on buffer size, so this has been fixed.
- Minor autoconf changes were made.
- Missing Win32 files were added to the dist-gzip file again.
IO::Util 1.5
IO::Util is a selection of general-utility IO function. more>>
SYNOPSIS
use IO::Util qw(capture slurp Tid Lid Uid load_mml);
capture()
# captures the selected filehandle
$output_ref = capture { any_printing_code() } ;
# now $$output_ref eq something
# captures FILEHANDLE
$output_ref = capture { any_special_printing_code() } *FILEHEANDLER ;
# append the output to $captured
capture { any_printing_code() } *FILEHEANDLER , $captured
# now $captured eq something
# use another class to tie the handler
use IO::Scalar ;
$IO::Util::TIE_HANDLE_CLASS = IO::Scalar
slurp()
$_ = /path/to/file ;
$content_ref = slurp ;
$content_ref = slurp /path/to/file ;
$content_ref = slurp *FILEHANDLE ;
# append the file content to $content
$_ = /path/to/file ;
slurp $content;
slurp /path/to/file, $content ;
slurp *FILEHANDLE, $content ;
Tid(), Lid(), Uid()
$temporarily_unique_id = Tid ; # Q9MU1N_NVRM
$locally_unique_id = Lid ; # 2MS_Q9MU1N_P5F6
$universally_unique_id = Uid ; # MGJFSBTK_2MS_Q9MU1N_PWES
A MML file (Minimal Markup Language)
< opt >
< !-- a multi line
comment-- >
< parA >
< optA >01< /optA >
< optA >02< /optA >
< optA >03< /optA >
< /parA >
< parB >
< optA >04< /optA >
< optA >05< /optA >
< optA >06< /optA >
< optB >
< key >any key< /key >
< /optB >
< /parB >
< /opt >
load_mml()
$struct = load_mml path/to/mml_file ;
$struct = load_mml $mml_string ;
$struct = load_mml *MMLFILE ;
$struct = load_mml ..., %options ;
# $struct = {
# parA => {
# optA => [
# 01,
# 02,
# 03
# ]
# },
# parB => {
# optA => [
# 04,
# 05,
# 06
# ],
# optB => {
# key => any key
# }
# }
# }
progress 1.0
Progress is a utility used in a pipe to report progress of data transfer to standard error. more>>
Enhancements:
- February 9, 2003
- progress 1.0
- Initial announcement
mod_auth_pipe 1.0
mod-auth-pipe is a module of authentication written for Apache 1 (it hasnt been tested with Apache 2, but it may work). more>>
Actually, this module is just mod-auth-shadow with a few modifications in order to accept any program as a pipe, letting this one validate both users andr groups.
mod_auth_pipe contents the module itself and an example pipe.
mod-auth-pipe can be configured independantly for whole server, for any VirtualHost or just per Location/Directory. It has very few configuration variables and its format is very simple. In order to configure apache to authenticate, for example, access to the administrative interface of oscommerce you can type this on your httpd.conf:
< Directory /var/www/oscommerce/catalog/admin >
AuthType Basic
AuthName osCommerce admin site
AuthPipe on
AuthPipeProgram /usr/local/bin/auth-pipe
require group oscommerce-admins
< /Location >
This way, and with a well-made auth-pipe program you can be sure that only those within the group oscommerce-admins could enter that section of your web.
IO::Multiplex 1.08
IO::Multiplex is a Perl module that can manage IO on many file handles. more>>
SYNOPSIS
use IO::Multiplex;
my $mux = new IO::Multiplex;
$mux->add($fh1);
$mux->add(*FH2);
$mux->set_callback_object(...);
$mux->listen($server_socket);
$mux->loop;
sub mux_input {
...
}
IO::Multiplex is designed to take the effort out of managing multiple file handles. It is essentially a really fancy front end to the select system call. In addition to maintaining the select loop, it buffers all input and output to/from the file handles. It can also accept incoming connections on one or more listen sockets.
It is object oriented in design, and will notify you of significant events by calling methods on an object that you supply. If you are not using objects, you can simply supply __PACKAGE__ instead of an object reference.
You may have one callback object registered for each file handle, or one global one. Possibly both -- the per-file handle callback object will be used instead of the global one.
Each file handle may also have a timer associated with it. A callback function is called when the timer expires.
Stormbaan Coureur 1.5.2
Stormbaan Coureur is a simulated obstacle course for automobiles. more>>
Enhancements:
- New name
- Extended track with half pipe jump
- Extended track with turn tables
- Fixed joystick accelerator axis assigment
- Softened the suspension
- Added brake-light
- Added reverse-gear-light
- Improved leaderboard
- Added respawn points
pipebench 0.40
pipebench is a utility that shows the status and a benchmark of piped commands. more>>
Pipebench measures the speed of a pipe, by sitting in the middle passing the data along to the next process. Works on at least Linux, OpenBSD, NetBSD, Solaris and x86, Alpha, HPPA, Sparc and Sparc64.
Compiling
Just type make to compile.
Type make install to have pipebench be installed in /usr/local/bin
xmms-pipe 0.5.5
xmmspipe is a plugin for XMMS that enables it to be controlled by sending strings to a named pipe (FIFO). more>>
echo play_pause > ~/.xmms/inpipe
will cause XMMS to pause or play.
Since version 0.5.0, it is possible to setup an output pipe, and query XMMS for information. For example, sending "report title" to the input pipe will cause the current songs title to be printed on the output pipe.
Included is a demo program called "fade", that shows how to use the plugin to fade the current song and advance to the next one. It requires the output pipe to be be enabled (via the Config window).
The Infopipe plugin does output pipes a little differently.
When I first wrote this plugin, I didnt know about other programs that I couldve used to control XMMS with shell scripts, such as xmmsctrl or xmms-shell. However, Ive kept xmmspipe alive because pipes may be preferable in some situations:
The pipe automatically inherits the security features of the underlying filesystem (e.g. you could change its permissions so that only users of a particular group can control XMMS).
In many programming languages, writing to a pipe is easier than executing programs, making it easier to build programs to control XMMS.
The plugin can call internal XMMS functions which means it can have more functionality than programs relying on the xmms_remote_* functions alone. For example, XMMSPipe can load/save playlists.
Sometimes I think XMMS itself should just be an MP3-playing daemon that interfaces with the outside world exclusively through pipes (one for input, at least one for output). This would allow a lot more flexibility, e.g. the GUI could be arbitrary and playlists could be managed by an external program. (It would work in the same way gkrellm works with files in /proc.) Also, the code would be simpler because it only has to worry about reading various audio formats and playing them. It wouldnt have to deal with window managers, X, etc.
Enhancements:
- Added playlist_move command due to Graeme Yeo
gBootRoot 1.5.0
gBootRoot it construct, develop, test, and boot distributions. more>>
Normal (non-root) users can make root filesystems and boot disks. It includes the make_debian script to create a testable user-mode-linux base Debian system, add-ons to enhance methods, and an MTD Emulator useful for running distributions made with the jffs/jffs2 filesystem.
Enhancements:
- Fixed a @INC problem with rpm packages. The fhs checks usually insert the module path (Debian std. path) into @INC via a BEGIN {}, but the new BootRoot::Options was trying to be loaded before the fact because it had been placed within the BEGIN{} and there was even a reminder in the code documentation from prior releases explaining not to do this. Updated BEGIN statements in gbootroot, expect_uml and yard_chrooted_tests, and made sure "." is always specified first in @INC.
- Thanks to Stian Skjelstad for pointing out some bugs - namely the former annoying @INC bug that never should have occurred in the first place - after I asked him to try out gbootroot to help with his MTD requirements.
- Added a new if/elsif control structure. if ( condition ) n statement(s) n elsif ( condition ) n statements elsif .. Nice functionality to have.
- Made Example.yard portable with the new if/elsif control structure, and added pam.d/system-auth if it exists on the system.
- Commented out many things in Helper.yard because UML.pm has been modified to allow no login along with no password, and provides a new method "close_no_init" to provide a shutdown marker after which uml_mconsole can be used to halt the process. This means faster creation time for root_fs and no lag.
- Huge fixes to all source packages.
- Added format rules found in Example* to the main documentation.
- Compiled for >= glibc 2.2.5. Previous version was compiled >= 2.3.1 which caused some things not to work on old distributions using 2.2*
- Removed the -q from expect_uml because this caused the newer version of mkreiserfs to fail because Namesys decided that unsolicited advertising was in order so everybody knows that there are actually some organizations and companies paying for its development. Wouldnt this be nice in a perfect world for all Free Software projects?
- Tested on Debian stable/unstable and rpm based distros RedHat 7.3/8.0, Mandrake 9.0, and Suse 7.3 thanks to umlbuilder. Overall, this is by far the most heavily tested release to date. Observed that stack overflows are occxurring from time to time in the nested testing environment.
- Added /usr/info/dir and info to make_debian which makes things much nicer.
- Added libexpect-perl and libgtk-perl to Build-Depends for debs; in general, there were many fixes for both debs and rpms and their respective source packages.
- Improved documentation.
- Added stop and go to the uml_mconsole interface for the UML Box.
- Made perl 5.8 compliant perl-IO-Stty, perl-IO-tty and perl-Expect rpm packages. Many things have changed especially with IO-tty and perl-Expect.
- Had to build slram into the kernel because RedHat 7.3s depmod causes the build to fail.
Cammgr 1.5
Cammgr manages a collection of web cameras. more>>
Any camera can be controlled provided a driver is available. Cammgr supports multiple images per camera, default images for inactive cameras, per- user/host/camera notifications, and an easy-to- use configuration file.
Cammgr can scan Apache log files to auto-initiate image capture, and tune capture frequency can to the minimum needed to ensure that clients receive a new image on request.
Enhancements:
- Support for Axis network cameras was added.
- A bug where the pipe file descriptor was left open across shell exec was fixed.
- A client capture manager from where all capture processes are dispatched and monitored was created.
- A bug where the capture process did not go away when cammgr exited was fixed.
- Other miscellaneous cleanups were done.