Newsgroups: comp.sys.next
Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!usenet
From: Garance_Drosehn@mts.rpi.edu
Subject: C Programming questions
Message-ID: <h4+gjkn@rpi.edu>
Nntp-Posting-Host: gilead.its.rpi.edu
Reply-To: gad@eclipse.its.rpi.edu
Organization: Rensselaer Polytechnic Institute
Date: 5 Apr 91 03:46:07 GMT
Lines: 50

Time for a few programming questions!

I'm trying to port some C code to my friendly NeXTStation (400meg drive).  I'm
not much of a C or Unix wizard, so these questions might have obvious
answers...

1) Is there some manual or set of manuals for programming the Next, or should
   I just look thru all the digital-library documents?

2) What I'm working on includes a library of subroutines.  I can compile them
   OK, but what commands do I need to turn them into a subroutine library? (ie,
   a "libXXX.a" file)

3) I tried to come up with the magic parameters to the "ld" command to load
   all my C object files into a runnable application.  I tried 
          ld -o my.app ${OBJECTS} -lsys_s -crt0.o
   but that was just guesswork and not suprisingly it didn't work very well.
   The program loads fine but dies when I try to run it (with "memory access
   exception in NXZoneCalloc", presumably something in the environment isn't
   setup right).
   I then took (what I consider) the sleazy way out and used:
          cc -o my.app ${OBJECTS}
   which works fine.  What parameters is cc sending on to ld?  I have CFLAGS
   set to "-ansi -pendantic -g -Wimplicit", if that's of any interest.  It's
   a quirk of mine that I feel silly using the compiler when I'm not actually
   compiling anything at that step.

4) Once I got past the loader, the program basically works.  One odd thing
   (compared to what I've seen on other platforms) is that the fprintf
   subroutine seems to always return a value of zero.  Ie, a statement of:
         PLen += fprintf(fp, "%d", Num);
   will always add zero to PLen.  On the other platforms that I've tried
   these routines on so far, fprintf returns the number of bytes it just
   printed.  Is there something I'm missing here.

   I can get around this by using the %n conversion character, eg:
         fprintf(fp, "%d%n", Num, &Temp_Int);
         PLen += Temp_Int;
   but that makes it two statements instead of one, and looks kinda stupid
   anyway.  Is there some way I could make fprintf work the way I'm expecting
   it to?

Well, that's all the questions I remember at the moment.  Send any and all
suggestions to Garance_Drosehn@mts.rpi.edu (or gad@eclipse.its.rpi.edu) and I'd
appreciate it.  I'm not sure if comp.sys.next itself is a good place for long
threads on programming suggestions...

 - - -
Garance_Drosehn@mts.rpi.edu
       or   gad@eclipse.its.rpi.edu  (NeXT mail)
