mkdir 'fibo-rtplib' cat > 'fibo-rtplib/Makefile.omk' < 'fibo-rtplib/fibofnc.c' < 'fibo-rtplib/fiboseries.c' < #include "fibolib.h" int fiboseries (int **series, int n) { int *p; int i; if (n < 0) return 0; p = malloc (sizeof (int) * (n + 1)); *series = p; if (!p) return 0; for (i = 0; i <= n; i++) { p[i] = fibofnc (i); } return 1; } EOF cat > 'fibo-rtplib/fibolib.h' < 'config.target' < 'Makefile.omk' mkdir 'fibo-rtp' cat > 'fibo-rtp/fiboprint.c' < void fiboprint (int *series, int n) { while (n-- >= 0) printf ("%d%c", *(series++), n >= 0 ? ' ' : '\n'); } EOF cat > 'fibo-rtp/Makefile.omk' < 'fibo-rtp/fibo2.c' < #include #include int main (int argc, char *argv[]) { int n; int res; char *p; int *series; if (argc >= 2) { n = strtol (argv[1], &p, 0); if ((p == argv[1]) || *p) { fprintf (stderr, "The \"%s\" string is not a number\n", argv[1]); return 1; } } else { printf ("Input number: "); scanf ("%d", &n); } res = fiboseries (&series, n); if (res <= 0) { fprintf (stderr, "fiboseries() failed for %d with code %d\n", n, res); return 1; } /* Incorrect use of the function without prototype!!! */ fiboprint (series, n); printf ("fibocalls=%d\n", fibocalls); return 0; } EOF