summaryrefslogtreecommitdiffabout
path: root/gammu
Side-by-side diff
Diffstat (limited to 'gammu') (more/less context) (ignore whitespace changes)
-rw-r--r--gammu/emb/gammu/gammu.c47
1 files changed, 46 insertions, 1 deletions
diff --git a/gammu/emb/gammu/gammu.c b/gammu/emb/gammu/gammu.c
index 1d53fb0..5163d81 100644
--- a/gammu/emb/gammu/gammu.c
+++ b/gammu/emb/gammu/gammu.c
@@ -8121,236 +8121,281 @@ static void Help(int argc, char *argv[])
/* Just --help */
if (argc == 2) {
HelpGeneral();
return;
}
if (!strcmp(argv[2],"all")) {
HelpHeader();
} else {
while (HelpDescriptions[i].category != 0) {
if (strcmp(argv[2], HelpDescriptions[i].option) == 0) break;
i++;
}
if (HelpDescriptions[i].category == 0) {
HelpGeneral();
printmsg("Unknown help topic specified!\n");
return;
}
HelpHeader();
printmsg("Gammu parameters, topic: %s\n\n", HelpDescriptions[i].description);
}
#if defined(WIN32) || defined(DJGPP)
cols = 80;
#else
cols = 0;
/* If stdout is a tty, we will wrap to columns it has */
if (isatty(1)) {
#ifdef TIOCGWINSZ
if (ioctl(2, TIOCGWINSZ, &w) == 0) {
if (w.ws_col > 0) cols = w.ws_col;
}
#endif
if (cols == 0) {
columns = getenv("COLUMNS");
if (columns != NULL) {
cols = atoi(columns);
if (cols <= 0) cols = 0;
}
}
if (cols == 0) {
/* Fallback */
cols = 80;
}
}
#endif
while (Parameters[j].Function != NULL) {
k = 0;
disp = false;
if (!strcmp(argv[2],"all")) {
if (j==0) disp = true;
if (j!=0) {
if (strcmp(Parameters[j].help,Parameters[j-1].help)) {
disp = true;
} else {
if (strcmp(Parameters[j].parameter,Parameters[j-1].parameter)) {
disp = true;
}
}
}
} else {
while (Parameters[j].help_cat[k] != 0) {
if (Parameters[j].help_cat[k] == HelpDescriptions[i].category) {
disp = true;
break;
}
k++;
}
}
if (disp) {
printf("%s", Parameters[j].parameter);
if (Parameters[j].help[0] == 0) {
printf("\n");
} else {
HelpSplit(cols - 1, strlen(Parameters[j].parameter) + 1, Parameters[j].help);
}
}
j++;
}
}
#if 0
#endif // 0
int main(int argc, char *argv[])
{
//fprintf(stderr,"HIIIIIIIIIIIII \n");
//#if 0
static int z ,start,i;
static int only_config ;
#if !defined(WIN32) && defined(LOCALE_PATH)
static char *locale, locale_file[201];
#endif
static char *cp;
static bool count_failed;
z = 0;
start=0;only_config = -1;count_failed = false;
s.opened = false;
s.msg = NULL;
s.ConfigNum = 0;
setlocale(LC_ALL, "");
#ifdef DEBUG
di.dl = DL_TEXTALL;
di.df = stdout;
#endif
//#if 0
/* Any parameters? */
if (argc == 1) {
HelpGeneral();
printmsg("Too few parameters!\n");
exit(1);
}
/* Help? */
if (strncmp(argv[1 + start], "--help", 6) == 0) {
Help(argc - start, argv + start);
exit(1);
}
/* Is first parameter numeric? If so treat it as config that should be loaded. */
if (isdigit(argv[1][0])) {
only_config = atoi(argv[1]);
if (only_config >= 0) start++; else only_config = -1;
}
+ GSM_ReadConfig(NULL, &s.Config[0], 0);
+ s.ConfigNum = 1;
+ GSM_Config *con = &s.Config[0];
+
+ char* tempC;
+ tempC = argv[argc-1]+2;
+ if ( *tempC != 0 ) {
+ fprintf(stderr,"Using model %s \n",tempC);
+ strcpy(con->Model,tempC );
+ }
+ tempC = argv[argc-2]+2;
+ if ( *tempC != 0 ) {
+ fprintf(stderr,"Using device %s \n",tempC);
+ con->Device = strdup(tempC);
+ con->DefaultDevice = false;
+ }
+ tempC = argv[argc-3]+2;
+ if ( *tempC != 0 ) {
+ fprintf(stderr,"Using connection %s \n",tempC);
+ con->Connection = strdup(tempC);
+ con->DefaultConnection = false;
+ }
+ argc = argc-3;
+#if 0
+ if ( ! mConnection.isEmpty() ) {
+ cfg->Connection = strdup(mConnection.latin1());
+ cfg->DefaultConnection = false;
+ qDebug("Connection set %s ", cfg->Connection );
+
+ }
+ if ( ! mDevice.isEmpty() ) {
+ cfg->Device = strdup(mDevice.latin1());
+ cfg->DefaultDevice = false;
+ qDebug("Device set %s ", cfg->Device);
+
+ }
+ if ( ! mModel.isEmpty() ) {
+ strcpy(cfg->Model,mModel.latin1() );
+ cfg->DefaultModel = false;
+ qDebug("Model set %s ",cfg->Model );
+ }
+
+#endif
+
+#if 0
cfg=GSM_FindGammuRC();
for (i = 0; i <= MAX_CONFIG_NUM; i++) {
if (cfg!=NULL) {
cp = INI_GetValue(cfg, "gammu", "gammucoding", false);
if (cp) di.coding = cp;
s.Config[i].Localize = INI_GetValue(cfg, "gammu", "gammuloc", false);
if (s.Config[i].Localize) {
s.msg=INI_ReadFile(s.Config[i].Localize, true);
} else {
#if !defined(WIN32) && defined(LOCALE_PATH)
locale = setlocale(LC_MESSAGES, NULL);
if (locale != NULL) {
snprintf(locale_file, 200, "%s/gammu_%c%c.txt",
LOCALE_PATH,
tolower(locale[0]),
tolower(locale[1]));
s.msg = INI_ReadFile(locale_file, true);
}
#endif
}
}
/* Wanted user specific configuration? */
if (only_config != -1) {
/* Here we get only in first for loop */
if (!GSM_ReadConfig(cfg, &s.Config[0], only_config)) break;
} else {
if (!GSM_ReadConfig(cfg, &s.Config[i], i) && i != 0) break;
}
s.ConfigNum++;
/* We want to use only one file descriptor for global and state machine debug output */
s.Config[i].UseGlobalDebugFile = true;
/* It makes no sense to open several debug logs... */
if (i != 0) {
strcpy(s.Config[i].DebugLevel, s.Config[0].DebugLevel);
free(s.Config[i].DebugFile);
s.Config[i].DebugFile = strdup(s.Config[0].DebugFile);
} else {
/* Just for first config */
/* When user gave debug level on command line */
if (argc > 1 + start && GSM_SetDebugLevel(argv[1 + start], &di)) {
/* Debug level from command line will be used with phone too */
strcpy(s.Config[i].DebugLevel,argv[1 + start]);
start++;
} else {
/* Try to set debug level from config file */
GSM_SetDebugLevel(s.Config[i].DebugLevel, &di);
}
/* If user gave debug file in gammurc, we will use it */
error=GSM_SetDebugFile(s.Config[i].DebugFile, &di);
Print_Error(error);
}
/* We wanted to read just user specified configuration. */
if (only_config != -1) {break;}
}
-
+#endif
/* Do we have enough parameters? */
if (argc == 1 + start) {
HelpGeneral();
printmsg("Too few parameters!\n");
exit(-2);
}
/* Check used version vs. compiled */
if (!mystrncasecmp(GetGammuVersion(),VERSION,0)) {
printmsg("ERROR: version of installed libGammu.so (%s) is different to version of Gammu (%s)\n",
GetGammuVersion(),VERSION);
exit(-1);
}
/* Check parameters */
while (Parameters[z].Function != NULL) {
if (mystrncasecmp(Parameters[z].parameter,argv[1+start], 0)) {
if (argc-2-start >= Parameters[z].min_arg && argc-2-start <= Parameters[z].max_arg) {
Parameters[z].Function(argc - start, argv + start);
break;
} else {
count_failed = true;
}
}
z++;
}
/* Tell user when we did nothing */
if (Parameters[z].Function == NULL) {
HelpGeneral();
if (count_failed) {
printmsg("Bad parameter count!\n");
} else {
printmsg("Bad option!\n");
}
}
/* Close debug output if opened */
if (di.df!=stdout) fclose(di.df);
//#endif // 0
fprintf(stderr,"kammu: Success. End. \n");
exit(0);
}
/* How should editor hadle tabs in this file? Add editor commands here.
* vim: noexpandtab sw=8 ts=8 sts=8:
*/