HDTenEightyP/NetNews huggingface dataset:
From: imb@asstdc.oz.au (michael butler)
Newsgroups: comp.lang.c
Subject: definition of strncpy stupid?
Date: Sun, 27 Dec 1992 03:06:00 +1100

ok@goanna.cs.rmit.oz.au (Richard A. O'Keefe) writes:

 > On the other hand, X3J11 made explicit a few restrictions that already
 > applied if you wanted to write portable code, which have the consequence
 > that a C compiler is fully entitled to "know" about sprintf (and all the
 > other library functions).

 [ .. ]

I was under the impression that a compiler's job was, in essence, the
translation of the source language into a machine-executable program which
performed the same "semantic intent" (to use Whitesmith's phrase) of the source
code. Naturally, this facility is only ever "guaranteed" (in so far as any
compiler can be proven "correct") if the source code is also both syntactally
(sp?) and semantically correct.

The issue of optimization is not usually a specified part of the process. It is
only a promise by the compiler author(s) that, under certain conditions and
probably with some restrictions, a particular compiler is capable of
recognizing that it can translate a specific set of statements into "more
efficient" executable code.

Largely, therefore, optimization is the application program author's
responsibility since it is beyond the scope of the "portable" language
definition (whether it be ANSI or not). If you want "strncpy" in lieu of
"sprintf", why not say it ?

If a particular compiler "knows sprintf", then well and good, but an
applications programmer has no right to expect that it might,

    michael

--
 Assorted C Software - asstdc.oz.au - 3:712/400@fidonet
      PO Box 595, Kensington NSW, Australia 2033

Newsgroups: comp.lang.c
From: govindg@ucunix.san.uc.edu (Girish Govind)
Subject: Flowchart for a C program
Organization: University of Cincinnati
Distribution: usa
Date: Mon, 28 Dec 1992 16:40:11 GMT

What is the easiest way to create a flowchart for a C program to explain to
some nontechnical people? Seems like this process must have been automated by
now. I know, I know what a lot of you are going to say that flowchart should
have been done before the program not after, but.....

-- Girish Govind
   govindg@ucunix.san.uc.edu
From: rat@po.CWRU.Edu (Reza A. Tabib-Azar)
Newsgroups: comp.lang.c
Subject: Re: strtok
Date: 31 Dec 1992 20:39:37 GMT
Organization: Case Western Reserve University, Cleveland, OH (USA)
Reply-To: rat@po.CWRU.Edu (Reza A. Tabib-Azar)
NNTP-Posting-Host: slc12.ins.cwru.edu


In a previous article, tjhendry@mcs.drexel.edu (Jonathan Hendry) says:

>Hi. Could someone please email me a brief description of how to use
>strtok()? I have read a few books, and asked my coworkers, and haven't
>received much useful information.
>
>Namely, after I run it on a string once, how do I get to the next
>part of the string?
>

You have to call it with that NULL as the string.
        token = strtok( str,  ",\n " );
        token = strtok( NULL, ",\n " );
You can call the secend line in a loop and check token to see if it is NULL,
if it is null then you have all your tokens.
I hope this will help.

-- 
main() { printf("\t\tReza A. Tabib-Azar\b\n"); 
       printf("Life is real, unless declared an integer.\n");
  printf("I get 'CoreDumped', therefore I am.\n", "\t\t\t\tAnonymous\n"); }
Newsgroups: comp.lang.c
From: mitch@clsi.COM (Mitchell N. Perilstein)
Subject: Re: Pascal as road to C (was Re: Newbie Wants Advice on C-Programming)
Organization: CAD Language Systems, Inc.
	<1992Dec27.031157.27179@mole-end.matawan.nj.us>
	<1992Dec28.045707.11191@grebyn.com>
Date: 28 Dec 92 10:57:34

Pascal is awful as a first language.  In my experience teaching it to
freshmen pure and applied science students, they spend a huge precentage
of their time worrying about, memorizing, and getting pinched by TA's
for SYNTAX.  They're supposed to be getting concepts like stepwise
refinement, algorithms, variables, etc...

I feel MIT is doing the right thing by teaching freshmen a functional
language with very little syntax: scheme. Here is all the syntax you
need to get started. Everything is either

		an Atom:	1234	foo	"bar"
		or a List:	(himom 123 (foo "bar") 45 () xyz)

There we go.  The rest is semantics. 

Another reason is that if they've had a little trig, thinking
functionally is already an established pattern: sin(sqrt(cos(pi))), etc. 

Thinking sequentially is a bad habit they can easily pick up later on.

---
 Mitchell N. Perilstein   CAD Language Systems, Inc.   410-992-5700 x225 
 Member, League for Programming Freedom.  Mail lpf@uunet.uu.net for info.
From: peter@deepthought.unm.edu (Peter Blemel)
Newsgroups: comp.lang.c
Subject: Dynamic loading of functions
Date: 24 Dec 92 18:02:51 GMT
Organization: Disorganization

Is there a portable way to load and execute a function in an object file from
a running program? I'm writing a program that does some math stuff and I'd like
to allow users to write their own functions to suppliment the supplied functions.

If there's no portable way, can anyone tell me how to do it on the following
platforms :

VAX/VMS
IBM AIX/RS6000
IBM AIX370
DEC Ultrix
SunOs
HP-UX
DomainOS
MS-DOS (WATCOM C)

Peter Blemel
peter@odin.unm.edu
msinc@jupiter.nmt.edu
Xref: sparky comp.lang.c:18868 comp.unix.questions:14964
From: hendrik@zeusa.UUCP (Hendrik Vermooten)
Newsgroups: comp.lang.c,comp.unix.questions
Subject: return value of fseek()
Date: 23 Dec 92 10:27:23 GMT
Followup-To: comp.lang.c
Organization: ZEUS software


The ANSI C standard says that fseek() returns a 0 for success. I read
somewhere that System V returns non-zero for success!
SCO V.3.2 returns 0 for success.

Does anybody know which operating systems' fseek() return non-ANSI values?

Appreciate any help, pref e-mail & I'll summarize.

-------------- Hendrik Vermooten - hendrik@zeusa.co.za -------------------
 ___________  _________  ___     ___     ______       ZEUS software
 \______   /  \   _____\ \  \    \  \   (   ___)      PO Box 52051
       /  /    \  \____   \  \    \  \   \  \____     WIERDA PARK 0149
      /  /      \   ___\   \  \    \  \   \____  \    South Africa
     /  /_____   \  \______ \  \____\  \    ___)  )   Tel +2712 660-2408
    /_________\   \________\ \_________/   (_____/    FAX +2712 660-2409
Newsgroups: comp.lang.c
From: gruber@danbob.vnet.ibm.com (Scott Gruber)
Subject: WHAT'S WRONG WITH THIS CODE  ... ???
Date: Thu, 24 Dec 92 13:53:07 GMT
Reply-To: gruber@danbob.vnet.ibm.com (Scott Gruber)
Organization: IBM T. J. Watson Research Center

Taylor,
       From what I can see in your code the 'p' pointer is not a result
of a malloc
which is what the function free is looking for. Reread the details of
free and if
you still want to use this then allocate memory for it using malloc then
free should
work.

Scott Gruber
From: alane@wozzle.linet.org (J. Alan Eldridge)
Newsgroups: comp.lang.c
Subject: Re: Peek/Poke in C
Date: 24 Dec 92 00:08:57 GMT
Organization: Disorganization

pal@regent.e-technik.tu-muenchen.dbp.de (Peter Loibl) writes:

> ericwebb@blackwlf.gwinnett.com (eric webb) writes:
> 
> >Hi again.. does anyone know how to do equivalent of BASIC's PEEK & POKE
> >statements in C?
> 
> I am sorry for my ignorance, but what are PEEK and POKE doing? If you
> describe their task, then this would be lots of help for all the
> "C-Gurus" here.

peek and poke are to access absolute memory addresses under DOS.

most DOS compilers support them either through intrinsic (builtin)
functions or macros that call builtin functions.

For example, TopSpeed C++ does this:

#define poke(a,b,c)  (*((int  far *)MK_FP((a),(b))) = (int)(c))
#define pokeb(a,b,c) (*((char far *)MK_FP((a),(b))) = (char)(c))
#define peek(a,b)    (*((int  far *)MK_FP((a),(b))))
#define peekb(a,b)   (*((char far *)MK_FP((a),(b))))

where a is a segment (or selector), b is an offset, and c is a value.

alane@wozzle.linet.org (J. Alan Eldridge)
Fido: The University of Walamaloo 1:272/38.473
From: John.Gibney@f386.n632.z3.fidonet.org (John Gibney)
Newsgroups: comp.lang.c
Subject: Midi programming (cross
Date: Wed, 23 Dec 1992 07:31:18

Howdy, All!

I'm trying to locate *any* copy of the following book:-

        "C Programming for MIDI", by Jim Conger
        M&T Books

I've discovered the book has *just* gone out of print
(Sep-1992).

I'm trying to write a program so that I can transfer voice
data between my PC/MPU-401 and my DX7 but I can't work out
how to program the MPU-401.

If anyone has a copy they'd like to sell or if you have some
C-source (Borland/Turbo C) that can help me out, I'd be
*very* appreciative -- this is a project I've been trying to
complete for quite a while and I haven't been able to get
anywhere with it.

Thanks, everyone.


John  :-)

... It's only a hobby... only a hobby... only a hobby...
___ Blue Wave/QWK v2.10

 * Origin: Eastern Mail Centre [PEP] OZ. +61-3-725-1621 (3:632/386)
From: mouse@thunder.mcrcim.mcgill.edu (der Mouse)
Newsgroups: comp.lang.c
Subject: Re: Another C palindrome puzzle
Date: 23 Dec 92 17:27:45 GMT
Organization: McGill Research Centre for Intelligent Machines

In article <9235703.672@mulga.cs.mu.OZ.AU>, fjh@munta.cs.mu.OZ.AU (Fergus James HENDERSON) writes:
> manus@evolving.com (Manus Hand) writes:

>> how about a palindromic "Hello world" program, with no comments,
>> #if's, #ifdef's, <<<OR #define's!>>>
> I liked your idea of using #pragma.
> Here's my solution with no comments, #ifs, #ifdefs, or #defines.

> 	#pragma amgarp#;""\

Oops.  What about the FrobozzCo compiler, which takes the "amgarp"
pragma as a directive to place the author of the code into the world of
_The World According to Garp_?  (Unless you specify -mumble on the
command line, in which case it simply takes the list of characters
following on the #pragma line as characters to be deleted from the
source, until another amgarp pragma is encountered.)

Or older versions of gcc, which would give up on compiling and run rogue
when they happened across a #pragma of any sort?

Or is it enough that it work on some specific compiler?  In that case,
it should be significantly easier.

					der Mouse

			    mouse@larry.mcrcim.mcgill.edu
Xref: sparky comp.lang.c:19112 comp.lang.c++:18618 comp.lang.misc:4080
From: ugo@oliver.sublink.org (Ugo Cei)
Newsgroups: comp.lang.c,comp.lang.c++,comp.lang.misc
Subject: Re: How to turn PC speaker off?
Keywords: PC, c, c++, speaker
Date: 30 Dec 92 13:03:19 GMT
Organization: Oliver System - Pavia ITALY

cschang@hamlet.umd.edu (C. S. Chang) writes:

>Is there any way to turn the PC speaker off so that there will be no
>beeps if a certain function call failed.

What about cutting the speaker cables? I think this is perfectly ANSI
compliant, unless you leave the power on, in which case undefined
behavior could result.

-- 
Ugo Cei --- Via Colombo 7 - 27100 Pavia - ITALY   |
         -- Sublink:  ugo@oliver.sublink.org      | "Real programs dump core"
From: kdq@quest.UUCP (Kevin D. Quitt)
Newsgroups: comp.lang.c
Subject: Re: Find files of a directory in UNIX
Date: Thu, 24 Dec 92 19:21:39 PST
Reply-To: srhqla!quest!kdq
Organization: Job quest  (805) 251-8210,  So Cal: (800) 400-8210

wangbs @casd1.iie.ncku writes:

> 
>    Hi, all :
>        In UNIX, how can I program to find all files in a directory ?  Since
>    I am not familar in C, It is better having example...

    try ls


>         Thanks for any response & happy new year !!!!

    you're welcome.


(P.S., from the FAQ:)

12.15:	How can I read a directory in a C program?

A:	See if you can use the opendir() and readdir() routines, which
	are available on most Unix systems.  Implementations also exist
	for MS-DOS, VMS, and other systems.  (MS-DOS also has FINDFIRST
	and FINDNEXT routines which do essentially the same thing.)


 _
Kevin D. Quitt      96.37% of all statistics are made up.     srhqla!quest!kdq
From: hahn@csd4.csd.uwm.edu (David James Hahn)
Newsgroups: comp.lang.c
Subject: Query : Algorithm book
Date: 22 Dec 1992 05:22:20 GMT
Organization: Computing Services Division, University of Wisconsin - Milwaukee
Distribution: usa
NNTP-Posting-Host: 129.89.7.4
Originator: hahn@csd4.csd.uwm.edu

I'm looking for a good book of algorithms with C code- sorting,
graph algorithms,  etc... Can anyone recommend one?  I'm not looking
for an instructional book, but  more  of a "handbook."   

				Thanks!    

					    David  Hahn



-- 
David Hahn
hahn@csd4.csd.uwm.edu
Xref: sparky comp.lang.c:18749 comp.unix.bsd:10508
From: stripes@pix.com (Josh Osborne)
Newsgroups: comp.lang.c,comp.unix.bsd
Subject: Re: Segmentation faults
Date: 21 Dec 92 18:01:51 GMT
Organization: Pix Technologies -- The company with no adult supervision

In article <veit.724925472@du9ds3> veit@du9ds3.fb9dv.uni-duisburg.de writes:
[...]
>This is a real problem where sizeof(int) != sizeof(char*), for instance with
>Turbo C or Microsoft C or similar 16bit junk. But if you compile this
>with a 32bit K&R compiler, and sizeof(int)==sizeof(char*) (=4), it won't see 
>a difference, because it will just take 32bit from the parameter stack 
>and push it as a 32bit argument to printf.

(which masks many bugs, which will show up on, say the Alpha)

>The compiler cannot find out the real expected type (it cannot do parsing
>of the format string in general!).

Not in general, but gcc CAN verify printf/scanf style args and parms as
long as the format string is a constant.  See __attribute__ in the gcc
manual.
-- 
           stripes@pix.com              "Security for Unix is like
      Josh_Osborne@Real_World,The          Multitasking for MS-DOS"
      "The dyslexic porgramer"                  - Kevin Lockwood
We all agree on the necessity of compromise.  We just can't agree on
when it's necessary to compromise.       - Larry Wall
From: smee@bristol.ac.uk (Paul Smee)
Newsgroups: comp.lang.c
Subject: Re: C code Layout
Date: 23 Dec 92 15:44:50 GMT
Reply-To: P.Smee@bristol.ac.uk (Paul Smee)
Organization: University of Bristol

In article <771@ulogic.UUCP> hartman@ulogic.UUCP (Richard M. Hartman) writes:
>... am I in the minority here by preferring style C:
>
>	keyword (condition) 
>		{
>		statement1;
>		statement2;
>		statement3;
>		}

Probably.  I prefer style D:

	keyword (condition) {
		statement1;
		statement2;
		statement3;
		}

Myself.  I suspect it is due to my PL/1 upbringing, in which the {}s
weren't used at all, and the 'end;' which terminated each block was
pretty definitely (IMHO) part of the block which it ended.

-- 
Paul Smee, Computing Service, University of Bristol, Bristol BS8 1UD, UK
 P.Smee@bristol.ac.uk - ..!uunet!uknet!bsmail!p.smee - Tel +44 272 303132
Newsgroups: comp.lang.c
From: john@chance.gts.org (John R MacMillan)
Subject: Re: sccs eats good code -
Organization: $HOME
Date: Tue, 22 Dec 1992 16:24:53 GMT

|Another portable alternative to the suggested
|
|	static char fmt[] = { '%','w','%','H','%','M','%','S','\0' };
|
|(braces courtesy of International Brace Fund for the Needy ;-) would be
|
|	if (strftime(time_str, 64, "%w%H\
|%M%S", time_struct) != 7)

And yet another:
	if (strftime(time_str, 64, "%w%" "H%" "M%S", time_struct) != 7)

(or however you want to break it up).
Newsgroups: comp.lang.c
From: mccall@mksol.dseg.ti.com (fred j mccall 575-3539)
Subject: Re: FP formats not linked
Organization: Texas Instruments Inc
Date: Wed, 30 Dec 1992 12:46:20 GMT

In <1992Dec30.023547.1076@cpp.uucp> root@cpp.uucp (Rich Bauer) writes:

>When scanf goes to get the first batting average in this program,
>the program terminates abnormally with the error message:
>"floating point formats not linked"

>What does this mean?  I can't find it in the manuals, and the code
>is correct as far as I can tell.  What's the problem?

You are presumably using Borland C++ (or some variant which is a
Borland product -- it helps to tell people this).  This question is so
common that it is answered in the FAQ.  It is also answered in a
README file that should have been installed in your BCC directory:

  - If you get a "floating point formats not linked" message at
    runtime, put the following somewhere in your source files:
 
        extern void _floatconvert();
        #pragma extref _floatconvert
 
    This will force inclusion of floating point formats, which
    may not be linked to reduce executable size.
 
-- 
"Insisting on perfect safety is for people who don't have the balls to live
 in the real world."   -- Mary Shafer, NASA Ames Dryden
------------------------------------------------------------------------------
Fred.McCall@dseg.ti.com - I don't speak for others and they don't speak for me.
Newsgroups: comp.lang.c
From: mbrousse@cs.ulowell.edu (Marc Brousseau)
Subject: Re: Program to convert .EXE to a "C" source file?  I really need one!!
Organization: University of Massachusetts at Lowell Computer Science
Date: Mon, 4 Jan 1993 02:58:16 GMT

>>>Hello. 
>>>	I am looking for a program that will take a .EXE or .COM file and
>>>convert it into a "C" source file.  I saw one on one of the FTP sites today,
>> [Stuff deleted]
>> 	I am looking for a program of that nature too.  If someone knows 
>> where one can be FTP'd I would appreciate E-Mail telling me.  
>> 				Thanks,
>> 				dutc0006@student.tc.umn.edu			
>> 
>I'd prefer a program that generates the RCS or SCCS archives the program was 
>developed in, plus a makefile.  Architectural and design documents would be 
>nice too.
>----------------------------------------------------------------------------
I want a printer that will run in reverse, taking in a document, and
converting it to a word processor file. Word for Windows out of a
newspaper would be nize.
Newsgroups: comp.lang.c
From: bandy@netnews.jhuapl.edu (Mike Bandy)
Subject: Re: Query : Algorithm book
Organization: JHU/Applied Physics Laboratory
Distribution: usa
Date: Tue, 22 Dec 1992 13:45:12 GMT

hahn@csd4.csd.uwm.edu (David James Hahn) writes:

>I'm looking for a good book of algorithms with C code- sorting,
>graph algorithms,  etc... Can anyone recommend one?  I'm not looking
>for an instructional book, but  more  of a "handbook."   

I like the "Numerical Recipes" text.  The one I use is based on Fortran,
but I understand there is a C version.

-- 

	Mike Bandy
	bandy@aplcomm.jhuapl.edu
	Johns Hopkins University / Applied Physics Lab
From: chuckb@stein.u.washington.edu (Charles Bass)
Newsgroups: comp.lang.c
Subject: Re: Function definition style
Date: 30 Dec 1992 23:01:48 GMT
Organization: University of Washington
NNTP-Posting-Host: stein.u.washington.edu

wright@staff.tc.umn.edu (Mark Wright) writes:

>Is there any good reason not to use the following style for defining
>functions:

>type function_name( varname1, varname2, varname3 )

>type varname1;
>type varname2;
>type varname3;

>I try to use the style in ansi k&r, but I notice that others are using this
>style and I assume they aren't all using pre-ansi compilers.  My problem is
>that to use Brief's function listing command the end paren must be on the same
>line as the function name, which is difficult to do using k&r 2 style if the 
>function needs several structs as parameters.  Besides, it's easier to
>document function parameters with k&r 1 style.  Is there any good reason
I dont think it's any easier to document parameters using this
style.  For example:     

type function_name(
	type varname1,  /* comments */
        type varname2,  /* more comments */
	type varname3)  /* even more comments */

works just fine in the ansi world of function headers.

chuckb
From: rat@po.CWRU.Edu (Reza A. Tabib-Azar)
Newsgroups: comp.lang.c
Subject: Re: ** HELP WITH FILE I/O **
Date: 3 Jan 93 18:36:58 GMT
Article-I.D.: usenet.1i7boaINNbku
Reply-To: rat@po.CWRU.Edu (Reza A. Tabib-Azar)
Organization: Case Western Reserve University, Cleveland, OH (USA)
NNTP-Posting-Host: slc12.ins.cwru.edu


In a previous article, lord@tradent.wimsey.bc.ca (Jason Cooper) says:

>Eeek!  I am writing a program to handle a local track meet and have to 
>input the participant records from a file.  What I want to do is load 
>these into an array for quick and easy access.  The array is right now of 
>undefined length, and its elements are structures (including each event, 
>it's heat, it's event, etc.).  I've tried using:
>
>fread(meet[record], sizeof(struct meetstruct), 1, tfile)
>
>Where meet is the array, meetstruct is the structure the array is 
>composed of, and tfile is the track meet's file stream.  I don't know 
>_what_ I'm doing wrong, but if somebody could correct this (oops, forgot 
>to mention, that's in a loop to go through records, I tried taking the 
>whole thing in one, but that didn't work either), then I'd appreciate 
>that VERY MUCH.  If I could input the whole thing in one with fread or 
>something, that would be _WONDERFUL_.  I'm using Borland C++, and would 
>like to understand _what_ I'm doing, so if you could explain it too, that 
>would be nice.  If I have to limit the size of the array, that's doable 
>too.


        [Stuff deleted]
 
You see, fread and frwite are used to read and write a block of data. For
 
example, you can write your whole array to a file and read it in one call as
well. Therefore, you do not need to put the fread call in a loop. The first
argument of fread is pointer to an array. Here is an example to for you
to see, it will write a block of data and the data will be read back in.
 
typedef struct {
    int a;
    char b;
} foo;
 
main()
{
        FILE *fp;
        foo inbuff[3];
        foo outbuff[3] = { {1, 'q'}, { 2, 'w'}, { 3, 'e'}};
 
        fp = fopen("myfoofile", "wb+");
        fwrite( outbuff, sizeof(foo), 3, fp);
        rewind( fp );
        fread( inbuff, sizeof(foo), 3, fp);
        /* do what ever you like to do with the inbuff array (no magic) */
        fclose(fp);
}
 
I hope this will clarify things a bit.


-- 
main() { printf("\t\tReza A. Tabib-Azar\b\n"); 
       printf("Life is real, unless declared an integer.\n");
  printf("I get 'CoreDumped', therefore I am.\n", "\t\t\t\tAnonymous\n"); }
Newsgroups: comp.lang.c
From: dutc0006@student.tc.umn.edu ()
Subject: Re: Program to convert .EXE to a "C" source file?  I really need one!!
Organization: University of Minnesota
Date: Sat, 2 Jan 1993 20:35:27 GMT

In article <1993Jan1.225604.964@blurt.oswego.edu> ch_ind05@blurt.oswego.edu (Greg Fuller (SUNY Oswego, Oswego New York)) writes:
>Hello. 
>	I am looking for a program that will take a .EXE or .COM file and
>convert it into a "C" source file.  I saw one on one of the FTP sites today,
[Stuff deleted]
	I am looking for a program of that nature too.  If someone knows 
where one can be FTP'd I would appreciate E-Mail telling me.  
				Thanks,
				dutc0006@student.tc.umn.edu
From: hartman@ulogic.UUCP (Richard M. Hartman)
Newsgroups: comp.lang.c
Subject: Re: C code Layout
Date: 29 Dec 92 23:13:05 GMT
Distribution: usa
Organization: negligable

In article <1992Dec24.182102.5554@draco.macsch.com> dnl@convex.is.macsch.com (David Lombard) writes:
>I'll add another vote for vi!
>
>Of course, I have been accused of liking all manner of editors sporting 
>arcane, 
>confusing, or are otherwise deadly single keystroke commands.  I think 
>the worst (best?) of that genre was an editor known as SPEED on DG's 
>DOS and RDOS systems.  As an example, the command `23t' would 
>display 23 lines, the command `23y' would kill your buffer 23 times 
>over - look at your keyboard, notice that t & y are adjacent!
>DG later wimped out on AOS and made some of the more glaring acts of self-
>destruction require confirmation.

Sounds like TECO.  I heard that people used to type their names
as commands into that one, just to see what they would do....

>Seriously, I find vi fast, compact, powerful, and (almost) universally
>available.  As for multiple buffers, that's what windows are for...
>Hmmm, maybe I should port vi to my Macinslash!?!?

I hate to say it, but vi *does* have multiple buffers.
26+10 cut/paste buffers to be specific.

You can also maintain your place in two different files
at once, although the second file is not kept in memory
in a buffer.

map ^N :e#^M


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Did you think it's a joke?		|
Well that's all right, do what 		|	-Richard Hartman
you want to do.				|	hartman@uLogic.COM
I've said my piece, now I 		|
leave it all up to you.			|