revlib.c revision 3f54fd611f536639ec30dd53c48e5ec1897cc7d9
7abd0c58a5ce51db13f93de82407b2188d55d298Christian Maeder/***********************************************************************
94ceeb2edbd25b4697ddd9f63c94377924352cf4Christian Maeder* This software is part of the ast package *
97018cf5fa25b494adffd7e9b4e87320dae6bf47Christian Maeder* Copyright (c) 1992-2011 AT&T Intellectual Property *
7abd0c58a5ce51db13f93de82407b2188d55d298Christian Maeder* and is licensed under the *
b4fbc96e05117839ca409f5f20f97b3ac872d1edTill Mossakowski* Eclipse Public License, Version 1.0 *
7abd0c58a5ce51db13f93de82407b2188d55d298Christian Maeder* by AT&T Intellectual Property *
08faa81d4dd8409cd923b334064f64f802ecc33dChristian Maeder* A copy of the License is available at *
94ceeb2edbd25b4697ddd9f63c94377924352cf4Christian Maeder* http://www.eclipse.org/org/documents/epl-v10.html *
08faa81d4dd8409cd923b334064f64f802ecc33dChristian Maeder* (with md5 checksum b35adb5213ca9657e911e9befb180842) *
e8ffec0fa3d3061061bdc16e44247b9cf96b050fChristian Maeder* Information and Software Systems Research *
08faa81d4dd8409cd923b334064f64f802ecc33dChristian Maeder* AT&T Research *
e8ffec0fa3d3061061bdc16e44247b9cf96b050fChristian Maeder* Florham Park NJ *
23a00c966f2aa8da525d7a7c51933c99964426c0Christian Maeder* Glenn Fowler <gsf@research.att.com> *
e8ffec0fa3d3061061bdc16e44247b9cf96b050fChristian Maeder* David Korn <dgk@research.att.com> *
ad270004874ce1d0697fb30d7309f180553bb315Christian Maeder***********************************************************************/
23a00c966f2aa8da525d7a7c51933c99964426c0Christian Maeder * common support for tail and rev
81946e2b3f6dde6167f48769bd02c7a634736856Christian Maeder#define rounddown(n,size) (((n)-1)&~((size)-1))
81946e2b3f6dde6167f48769bd02c7a634736856Christian Maeder * copy the lines starting at offset <start> from in <in> to <out>
a0e24c863b78669b05797ff8ce635995a9bede44Christian Maeder * in reverse order
81946e2b3f6dde6167f48769bd02c7a634736856Christian Maederint rev_line(Sfio_t *in, Sfio_t *out, off_t start)
94ceeb2edbd25b4697ddd9f63c94377924352cf4Christian Maeder register int n, nleft=0;
94ceeb2edbd25b4697ddd9f63c94377924352cf4Christian Maeder if(start>0 && sfmove(in, (Sfio_t*)0, start, -1) != start)
94ceeb2edbd25b4697ddd9f63c94377924352cf4Christian Maeder if(sfmove(in, tmp, SF_UNBOUND, -1) < 0 || !sfeof(in) || sferror(tmp))