An approach for reading and encoding taken in abcde is the use of Unix pipes.

By this way, a program sends as output what another programs expects as input,
without writing the information in the hard disk.

For it to work with abcde, a ripper must send the data of the CD tracks which
are ripped to the standard output, while sending the information and error
messages to another "stream", so that the encoder does not get confused. This
second stream is called "standard error".

The encoder program needs to be able to encode the information send to it by
reading from the standard input (which is what the ripper sends to the standard
output).

Usually Unix/Linux programs deal with the standard input/output by using the
special file name "-", as in the following example:

cdripper -o - | audioencoder -i - -o file.ext

The "cdripper" program uses the flag "-o" to identify the file it will output
the data to. For the "audioencoder" program to be able to read the output
through a Unix pipe (the "|" symbol), the output needs to be sent to the
standard output using the "-" special filename.

Once the output has been pipped to "audioencoder" we use the same special
filename to read the information as input with the "-i" flag and output it to
"file.ext" with the "-o" flag.

Keep in mind that the example above is only that, an example, and every ripper
and encoder differs from in each other in the way they interact with pipes. 

For one reason, not all the rippers and encoders are supported by abcde: the
author (or the users) have not included support for them.

If you plan to use a ripper or encoder which is not supported, you need to know
how to use the ripper/encoder. For example, cdparanoia just uses "-" as the
output filename and works. The program used to decode FLAC files (yes, abcde
supports "ripping" from a FLAC file :) uses "-c ".

To add support for a ripper called "cdripper" which uses the "-" special flag
for outputting to the standard output, you need to open the config file (either
/etc/abcde.conf or ~/.abcde.conf) and add the line:

PIPERIPPER_cdripper="-"

For an encoder called "audioencoder" which uses "--stdin" to read the pipe
input, you need to add:

PIPE_audioencoder="--stdin"

Of course, you should try your configuration and report it so that it can be
included in future versions of abcde.

If you are familiar with POSIX shell programing, please open "abcde" and take a
look at the lines below the one marked with "###USEPIPESSUPPORT###".

Thanks for your time!
