int main (int argc, char *argv[]) { ProgramExitStatus exitStatus = PROG_EXIT_SUCCESS; brlapi_fileDescriptor fd; settings.host = NULL; settings.auth = NULL; { static const OptionsDescriptor descriptor = { OPTION_TABLE(programOptions), .applicationName = "apitest" }; PROCESS_OPTIONS(descriptor, argc, argv); } fprintf(stderr, "Connecting to BrlAPI... "); if ((fd=brlapi_openConnection(&settings, &settings)) != (brlapi_fileDescriptor)(-1)) { fprintf(stderr, "done (fd=%"PRIfd")\n", fd); fprintf(stderr,"Connected to %s using auth %s\n", settings.host, settings.auth); if (opt_showName) { showDriverName(); } if (opt_showSize) { showDisplaySize(); } if (opt_showDots) { showDots(); } if (opt_learnMode) { enterLearnMode(); } if (opt_showKeyCodes) { showKeyCodes(); } if (opt_suspendMode) { suspendDriver(); } brlapi_closeConnection(); fprintf(stderr, "Disconnected\n"); } else { fprintf(stderr, "failed to connect to %s using auth %s",settings.host, settings.auth); brlapi_perror(""); exitStatus = PROG_EXIT_FATAL; } return exitStatus; }
int main (int argc, char **argv) { char *charbuf; widechar inbuf[BUFSIZE]; widechar transbuf[BUFSIZE]; widechar outbuf[BUFSIZE]; int outputPos[BUFSIZE]; int inputPos[BUFSIZE]; int inlen; int translen; int outlen; int cursorPos = -1; int realInlen = 0; int k; int optc; set_program_name (argv[0]); while ((optc = getopt_long (argc, argv, "hv", longopts, NULL)) != -1) switch (optc) { /* --help and --version exit immediately, per GNU coding standards. */ case 'v': version_etc (stdout, program_name, PACKAGE_NAME, VERSION, AUTHORS, (char *) NULL); exit (EXIT_SUCCESS); break; case 'h': print_help (); exit (EXIT_SUCCESS); break; default: fprintf (stderr, "Try `%s --help' for more information.\n", program_name); exit (EXIT_FAILURE); break; } if (optind < argc) { /* Print error message and exit. */ fprintf (stderr, "%s: extra operand: %s\n", program_name, argv[optind]); fprintf (stderr, "Try `%s --help' for more information.\n", program_name); exit (EXIT_FAILURE); } validTable = NULL; enteredCursorPos = -1; mode = 0; while (1) { getCommands (); printf ("Type something, press enter, and view the results.\n"); printf ("A blank line returns to command entry.\n"); if (minimalist) while (1) { translen = outputSize; outlen = outputSize; inlen = getInput (); if (inlen == 0) break; if (!(realInlen = extParseChars (inputBuffer, inbuf))) break; inlen = realInlen; if (!lou_translateString (table, inbuf, &inlen, transbuf, &translen, NULL, NULL, 0)) break; transbuf[translen] = 0; printf ("Translation:\n"); charbuf = showString (transbuf, translen); k = strlen (charbuf) - 1; charbuf[k] = 0; printf ("%s\n", &charbuf[1]); if (showSizes) printf ("input length = %d; output length = %d\n", inlen, translen); lou_backTranslateString (table, transbuf, &translen, outbuf, &outlen, NULL, NULL, 0); printf ("Back-translation:\n"); charbuf = showString (outbuf, outlen); k = strlen (charbuf) - 1; charbuf[k] = 0; printf ("%s\n", &charbuf[1]); if (showSizes) printf ("input length = %d; output length = %d.\n", translen, outlen); if (outlen == realInlen) { for (k = 0; k < realInlen; k++) if (inbuf[k] != outbuf[k]) break; if (k == realInlen) printf ("Perfect roundtrip!\n"); } } else while (1) { for (k = 0; k < strlen (enteredEmphasis); k++) emphasis[k] = (formtype) enteredEmphasis[k]; emphasis[k] = 0; strcpy (spacing, enteredSpacing); cursorPos = enteredCursorPos; inlen = getInput (); if (inlen == 0) break; outlen = outputSize; if (backOnly) { if (!(translen = extParseChars (inputBuffer, transbuf))) break; inlen = realInlen; } else { translen = outputSize; if (!(realInlen = extParseChars (inputBuffer, inbuf))) break; inlen = realInlen; if (!lou_translate (table, inbuf, &inlen, transbuf, &translen, emphasis, spacing, &outputPos[0], &inputPos[0], &cursorPos, mode)) break; transbuf[translen] = 0; if (mode & dotsIO) { printf ("Translation dot patterns:\n"); printf ("%s\n", showDots (transbuf, translen)); } else { printf ("Translation:\n"); charbuf = showString (transbuf, translen); k = strlen (charbuf) - 1; charbuf[k] = 0; printf ("%s\n", &charbuf[1]); if (showSizes) printf ("input length = %d; output length = %d\n", inlen, translen); } } if (cursorPos != -1) printf ("Cursor position: %d\n", cursorPos); if (enteredSpacing[0]) printf ("Returned spacing: %s\n", spacing); if (showPositions) { printf ("Output positions:\n"); for (k = 0; k < inlen; k++) printf ("%d ", outputPos[k]); printf ("\n"); printf ("Input positions:\n"); for (k = 0; k < translen; k++) printf ("%d ", inputPos[k]); printf ("\n"); } if (!forwardOnly) { if (!lou_backTranslate (table, transbuf, &translen, outbuf, &outlen, emphasis, spacing, &outputPos[0], &inputPos[0], &cursorPos, mode)) break; printf ("Back-translation:\n"); charbuf = showString (outbuf, outlen); k = strlen (charbuf) - 1; charbuf[k] = 0; printf ("%s\n", &charbuf[1]); if (showSizes) printf ("input length = %d; output length = %d\n", translen, outlen); if (cursorPos != -1) printf ("Cursor position: %d\n", cursorPos); if (enteredSpacing[0]) printf ("Returned spacing: %s\n", spacing); if (showPositions) { printf ("Output positions:\n"); for (k = 0; k < translen; k++) printf ("%d ", outputPos[k]); printf ("\n"); printf ("Input positions:\n"); for (k = 0; k < outlen; k++) printf ("%d ", inputPos[k]); printf ("\n"); } } if (!(forwardOnly || backOnly)) { if (outlen == realInlen) { for (k = 0; k < realInlen; k++) if (inbuf[k] != outbuf[k]) break; if (k == realInlen) printf ("Perfect roundtrip!\n"); } } } } lou_free (); exit (EXIT_SUCCESS); }
static char *print_dots(widechar *buffer, int length) { static char dots[BUFSIZE]; strcpy(dots, showDots(buffer, length)); return dots; }