[Nut-upsdev] Default NUT PORT

Peter Selinger selinger at mathstat.dal.ca
Sun Jan 14 02:09:33 CET 2007


selinger wrote:
> 
> Keep in mind that PORT can be changed at ./configure time
> (--with-port), so hardcoding it is not an option. 
> 
> There is a way for the proprocessor to convert a number to a string.
> The syntax is a bit obscure, and I have never seen it used in any
> actual program. It works like this:
> 
>  #define PORT 3493
>  #define string_const_aux(x) #x
>  #define string_const(x) string_const_aux(x)
> 
>  char *s = string_const(PORT);
> 
> Running this through the preprocessor (gcc -E), you get 
> 
>  char *s = "3493";
> 
> The indirection is needed by the way. If you just do
> string_const_aux(PORT), you get "PORT" and not "3493". I hope you
> agree that this is obscure.  
> 
> I think a better solution is to just #define PORT as a character
> string in the first place. As far as I can see, this primarily affects
> two lines: include/config.h:197 (i.e. configure.in:505) and
> clients/upsclient.c:966.
> 
> The question is when exactly this should be converted to a number.
> Should this be done in upscli_splitname() or in upscli_connect()?  The
> latter would require a change in the prototypes of upscli_splitname()
> and upscli_connect(), and an attendant change in all the existing
> clients. When changing the "port" argument to a string, the API should
> also define whether this is allocated (and must be freed) or not. 
> 
> Alternatively, perhaps it is better to convert any symbolic value to
> an integer early, i.e., in upscli_connect().

Gah. I meant "early, i.e., in upscli_splitname()". 
 
> -- Peter
> 
> Arjen de Korte wrote:
> > 
> > In my latest patch, I hardcoded the port NUT uses for TCP communication
> > (3493). The reason is, that I can't figure out a way how to change the
> > numeric value of the #define'd PORT into a character string. Using
> > snprintf() and a temporary buffer just seems wrong, since this should be
> > handled by the preprocessor, rather than at runtime.
> > 
> > The following files are affected:
> > - server/conf.c (line 205)
> > - server/upsd.c (line 1024)
> > 
> > Best regards, Arjen
> > 
> > PS  I don't want to use a numeric value, since the ports can also be set
> > through their service name (if we use getaddrinfo(), which is neat).
> > 
> > _______________________________________________
> > Nut-upsdev mailing list
> > Nut-upsdev at lists.alioth.debian.org
> > http://lists.alioth.debian.org/mailman/listinfo/nut-upsdev
> > 
> 
> 




More information about the Nut-upsdev mailing list