@@ -949,6 +949,51 @@ returnStringVarArgs2(const char *fmt, ...) {
949949 return cp ;
950950}
951951
952+ EXPORT char *
953+ returnStringVarArgs4 (const int arg1 , const double arg2 , const int arg3 , const double arg4 , const char * fmt , ...) {
954+ int written ;
955+ int remainingSpace = 4096 ;
956+ char * result = malloc (4096 );
957+ char * writeResult = result ;
958+ written = snprintf (writeResult , remainingSpace , "Arg1:%d#" , arg1 );
959+ writeResult += written ;
960+ written = snprintf (writeResult , remainingSpace , "Arg2:%.0f#" , arg2 );
961+ writeResult += written ;
962+ written = snprintf (writeResult , remainingSpace , "Arg3:%d#" , arg3 );
963+ writeResult += written ;
964+ written = snprintf (writeResult , remainingSpace , "Arg4:%.0f#" , arg4 );
965+ writeResult += written ;
966+ written = snprintf (writeResult , remainingSpace , "Fmt:%s#" , fmt );
967+ writeResult += written ;
968+ va_list ap ;
969+ va_start (ap , fmt );
970+ char * param ;
971+ while (* fmt ) {
972+ switch (* fmt ++ ) {
973+ case 's' :
974+ param = va_arg (ap , char * );
975+ printf ("X1: %s\n" , param );
976+ written = snprintf (writeResult , remainingSpace , "%s#" , param );
977+ writeResult += written ;
978+ break ;
979+ case 'd' :
980+ printf ("X2\n" );
981+ written = snprintf (writeResult , remainingSpace , "%d#" , va_arg (ap , int ));
982+ writeResult += written ;
983+ break ;
984+ case 'f' :
985+ printf ("X3\n" );
986+ written = snprintf (writeResult , remainingSpace , "%.0f#" , va_arg (ap , double ));
987+ writeResult += written ;
988+ break ;
989+ default :
990+ break ;
991+ }
992+ }
993+ va_end (ap );
994+ return result ;
995+ }
996+
952997typedef union _MixedUnion1 {
953998 int intValue ;
954999 double doubleValue ;
0 commit comments