[comp.sys.isis] Compile ISIS on AUX

kao@capmkt.COM (Shao-Kong Kao) (06/06/91)

We have encountered some problems when compiling isis on AUX, and we would
appreciate if anybody could give some advices.

The first problem is with msg.h, the compiler complains at lines containing
va_list.  We add the following lines and got rid of the problem:
#    ifndef va_start
#        include    <varargs.h>
#    endif

The second one is with cl_isis.c at line 1961: if(act_map[act].act_gotres),
where act_map[act].act_gotres is a two-element int array.  I am not sure the 
intention of this if statement.  I'd like to know whether it check the first 
element or both elements ?  Or is it a bug ?

We use c89 compiler and also had many warnings, mainly for pointers to funcs
returning void.  We have to cast in order to get rid of the warnings.

Another problem with cl_isis.c is the register variables, such as the following:
msg_get(msg, "%D, %s", longvec, veclen, cip_isisdir); where longvec and
cip_isisdir are register variables, since you can't take the address of a
register var.  Thinking it won't hurt, we just ignored the warnings.

ken@CS.Cornell.EDU (Ken Birman) (06/08/91)

In article <619@capmkt.COM> kao@capmkt.COM (Shao-Kong Kao) writes:
>We have encountered some problems when compiling isis on AUX, and we would
>appreciate if anybody could give some advices.

V3.0 fixes all of these... for V2.1:

>The first problem is with msg.h, the compiler complains at lines containing
>va_list.  We add the following lines and got rid of the problem:
>#    ifndef va_start
>#        include    <varargs.h>
>#    endif

Right.  Some versions of varargs.h aren't protected with the usual
#ifndef _varargs.h
#define  _varargs.h
  ... stuff
#endif

and hence die if included twice; apparently AUX is one.  We
know ISIS is solid on AUX but slight changes to the include
sequence can trigger these sortsof problems and we must have
made such a change subsequent to porting ISIS and without having
a chance to test it again (we don't run AUX at Cornell right now)

Your change is fine.  We did the identical thing in V3.0! 

>
>The second one is with cl_isis.c at line 1961: if(act_map[act].act_gotres),
>where act_map[act].act_gotres is a two-element int array.  I am not sure the 
>intention of this if statement.  I'd like to know whether it check the first 
>element or both elements ?  Or is it a bug ?

This if statement was just to cut back on the verbiage in the cl_dump
output.  You can delete the if part.  It was supposed to be testing the
two values to see if both were null, I guess.

>We use c89 compiler and also had many warnings, mainly for pointers to funcs
>returning void.  We have to cast in order to get rid of the warnings.

Yes, we fixed this in V3.0 too, for the same reason.  Quite a pain.

>Another problem with cl_isis.c is the register variables, such as the following:
>msg_get(msg, "%D, %s", longvec, veclen, cip_isisdir); where longvec and
>cip_isisdir are register variables, since you can't take the address of a
>register var.  Thinking it won't hurt, we just ignored the warnings.

This was just a bug -- longvec should not have been declared "register"
in V2.1 because it was an array.  It should have been declared "int".

Register is ignored in this case, so it shouldn't matter if you don't
fix this, but the code was wrong.



-- 
Kenneth P. Birman                              E-mail:  ken@cs.cornell.edu
4105 Upson Hall, Dept. of Computer Science     TEL:     607 255-9199 (office)
Cornell University Ithaca, NY 14853 (USA)      FAX:     607 255-4428