main and getopt aren't variadic, they're array-based.
So one solution could be converting the variadic arguments into an array.
Code:
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
void argfunction(char *howmany, ...);
int main(void) {
argfunction("abc", "atext", "btext", "ctext");
return(0);
}
void argfunction(char *howmany, ...)
{
int n=0;
// Never forget the NULLs, they convert mysterious "why" errors
// into "oh, I forgot to assign X" errors
char *host=NULL, *user=NULL, *pass=NULL, *port=NULL;
int argc=0;
char *argv[16];
va_list ap; // IIRC ap should always be the very last variable declared in a function.
va_start(ap, howmany);
argv[0]=""; // just tradition, argv[0] in main() is not an argument
// checks howmany[0], assigns argv[1].
// checks howmany[1], assigs argv[2], etc.
while((argc<(16-2))&&howmany[argc++]) argv[argc]=va_arg(ap, char *);
argv[argc]=NULL; // Also traditional that argv[argc] be NULL.
va_end(ap);
printf("Howmany is: %s\n", howmany);
printf("Arguments are:\n");
for(n=1; n<argc; n++)
printf("\t%d\t%s\n", n, argv[n]);
optind=1; // This is global, so reset it
// You now have argv, argc, and optind just like main to feed getopt with.
}
Last edited by Corona688; 02-20-2019 at 04:07 PM..
I'm using getopt() to get command line options.One the optons accepts and argument.The argument is and offset.I was wondering how can I scecify that it's argument is of the type off_t.I've something like this "offset=(off_t)optarg" and it don't work. (1 Reply)
scriptname
i have made a script to perform so tasks and i managed to complete the tasks for all the options
the problem i am facing is that i can run the scripts individually but i would like to make it such that it can accept multiple options and give me the appropriate output
e.g.... (1 Reply)
#!/bin/sh
set -- `getopt "abco:" "$@"`
a= b= c= o=
while :
do
case "$1" in
-a) a=1;;
-b) b=1;;
-c) c=1;;
-o) shift; o="$1";;
--) break;;
esac
shift
done
shift # get rid of --
# rest of script...
# e.g.
ls -l $@ (6 Replies)
I m trying to use getopt
This is my script, but it doesn't take argument in variable,
Please help.
set - - `getopt mscl: $*`
if
then
echo "Exiting...."
exit 2
fi
for i in $*
do
case $i in
-m) MAIL="$i"; shift;;
-s) SCRIPT=$OPTARG; shift;;
-c) COB=$OPTARG; shift;;... (2 Replies)
Hi,
I want to use the getopt function to parse some arguments for a script.
while getopts "i:f:r:" OPTION
do
case $OPTION in
i) iter=$OPTARG;;
f) frame=$OPTARG;;
r) roi=$OPTARG;;
?) echo Usage: ......
exit 2;;
esac
done
However, I... (5 Replies)
Hi All,
An old work friend wrote a script which I've been trying to understand how a section of it currently works and work out how i can add some command line switches which i can use later in the script to append the output depending on the command line arguements.
Currently it works by... (1 Reply)
Discussion started by: mutley2202
1 Replies
LEARN ABOUT OSF1
dxmcolormixsetnewcolor
DXmColorMixSetNewColor(3X)DXmColorMixSetNewColor(3X)NAME
DXmColorMixSetNewColor - Sets the new color red, green, and blue values in the color mixing widget.
SYNOPSIS
void DXmColorMixSetNewColor(
DXmColorMixWidget cmw,
unsigned short red,
unsigned short green,
unsigned short blue );
PARAMETERS
The identifier (widget ID) of the color mixing widget. The new color red value. The value is expressed as an X color value (0 to 65535).
The new color green value. The value is expressed as an X color value (0 to 65535). The new color blue value. The value is expressed as an
X color value (0 to 65535).
A complete list of all the X color values available to you is located on your system. To find it, type the following command: % find /
-name '*rgb*' -print
DESCRIPTION
The DXmColorMixSetNewColor routine allows the application or a user-supplied color mixer subwidget to pass the current color value to the
color mixing widget. Note that your application will perform this operation faster if you call this routine instead of the Intrinsic rou-
tine XtSetValues.
SEE ALSO DXmColorMixGetNewColor(3X), DXmCreateColorMix(3X), DXmCreateColorMixDialog(3X)DXmColorMixSetNewColor(3X)