/*We use the internal routines from the text editor
to cut and paste lines to rev the order of
lines in a text file.
*/

Cd(__DIR__);;

U0 Rev(U8 *in_name, U8 *out_name)
{
    CDoc    *doc_in  = DocRead(in_name),
            *doc_out = DocNew(out_name);
    DocTop(doc_in);
    while (doc_in->head.next != doc_in)
    {
        EdLineDown(doc_in, SC_CURSOR_DOWN | SCF_SHIFT);
        ClipCut(doc_in);
        DocTop(doc_out);
        ClipPaste(doc_out);
    }
    DocWrite(doc_out);
}

Rev("DemoPoemBwd.DD", "~/DemoPoemFwd.DD");