diff xdwaddpage2.cpp @ 8:61ce4754737e

bug fix.
author pyon@macmini
date Tue, 03 Apr 2018 00:11:01 +0900
parents 8de5b1bd9506
children cc5262d43399
line wrap: on
line diff
--- a/xdwaddpage2.cpp	Sat Mar 24 08:51:45 2018 +0900
+++ b/xdwaddpage2.cpp	Tue Apr 03 00:11:01 2018 +0900
@@ -1,16 +1,18 @@
 /* Makefile
-debug: xdwaddpage2.c
+debug: xdwaddpage2.cpp
 	#cls
-	g++ -g -O0 -I. xdwaddpage2.c xdwapi.lib
+	gcc -g -O0 -I. xdwaddpage2.cpp xdwapi.lib
 
-release: xdwaddpage2.c
-	g++ -I. xdwaddpage2.c xdwapi.lib -static -o xdwaddpage2.exe
+release: xdwaddpage2.cpp
+	gcc -I. xdwaddpage2.cpp xdwapi.lib -static -o xdwaddpage2.exe
 	strip xdwaddpage2.exe
 
 clean:
 	rm -rf tempXXXX
 */
 
+#include <unistd.h>
+#include <stdbool.h>
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
@@ -50,6 +52,16 @@
 	}
 }
 
+void print_help() {
+	char prog[12] = "xdwaddpage2";
+	fprintf( stderr, "Usage:\n" );
+	fprintf( stderr, " %s infile\n", prog );
+	fprintf( stderr, " %s -l infile\n", prog );
+	fprintf( stderr, " %s -ltxt infile\n", prog );
+	fprintf( stderr, " %s -s S infile\n", prog );
+	fprintf( stderr, " %s -v infile\n", prog );
+}
+
 void print_now( char const *msg ) {
    time_t now = time( NULL );
    struct tm *ts = localtime( &now );
@@ -80,53 +92,39 @@
 int main( int argc, char* argv[] ) {
 
 	/* オプションの解析 */
-	char prog[128];
-	strcpy( prog, argv[0] );
+	bool pnow = false;
+	bool pleft = false;
+	char *ltext = NULL;
+	int sp = 1;
 
-	int pnow = 0;
-	int pstart = 0;
-	int pleft = 0;
-	char c;
-	while ( --argc > 0 && ( *++argv )[0] == '-' ) {
-		while ( c = *++argv[0] ) {
-			switch ( c ) {
-				case 'v':
-					pnow = 1;
-					print_now( "start." );
-					break;
-				case 'l':
-					pleft = 1;
-					break;
-				case 's':
-					pstart = 1;
-					break;
-				default:
-					fprintf( stderr, "error: illegal option '%c'.\n", c );
+	int opt;
+	while ( ( opt = getopt( argc, argv, "vs:l::" ) ) != -1 ) {
+		switch ( opt ) {
+			case 'v':
+				pnow = true;
+				print_now( "start." );
+				break;
+			case 'l':
+				pleft = true;
+				ltext = optarg;
+				break;
+			case 's':
+				sp = atoi( optarg );
+				if ( sp == 0 ) {
+					print_help();
 					exit( 1 );
-			}
+				}
+				break;
+			default:
+				print_help();
+				exit( 1 );
 		}
 	}
 
-	int sp = 1;
 	char in_path[ _MAX_PATH ];
-	if ( argc == 1 ) {
-		_fullpath( in_path, argv[0], _MAX_PATH );
-	} else if ( argc == 2 ) {
-		if ( pstart == 1 ) {
-			sp = atoi( argv[0] );
-			_fullpath( in_path, argv[1], _MAX_PATH );
-		}
-	} else {
-		fprintf( stderr, "%s infile\n", prog );
-		fprintf( stderr, "%s -l infile\n", prog );
-		fprintf( stderr, "%s -s S infile\n", prog );
-		fprintf( stderr, "%s -v infile\n", prog );
-		exit( 1 );
-	}
+	_fullpath( in_path, argv[ argc - 1 ], _MAX_PATH );
 
 	/* 本処理 */
-	if ( pnow ) print_now( "adding pages." );
-
 	int api_result = 0;
 
 	XDW_DOCUMENT_HANDLE h = NULL; // 文書ハンドルを開く
@@ -143,14 +141,19 @@
 
     int sz = 80;    // 文字サイズ
     int tr = 1;     // 透明フラグ
-    char pagenum[18];
+    char pagenum[18], lpagenum[30];
 
 	// アノテーションを貼り付ける
     for ( int p = 0; p < last_page; p++ ) {
-        sprintf( pagenum, "%05d-%05d-%05d", p + sp, p + 1,last_page );
-		if ( pleft == 1 )
-			api_result = add_annotation( h, p + 1,  1700,  5600, pagenum, &sz, tr );    // 左上
+        sprintf( pagenum, "%05d-%05d-%05d", p + sp, p + 1, last_page );
         api_result = add_annotation( h, p + 1, 17500, 28500, pagenum, &sz, tr );        // 右下
+		if ( pleft ) {
+			if ( ltext != NULL ) 
+				sprintf( lpagenum, "%s%s", pagenum, ltext );
+			else
+				sprintf( lpagenum, "%s", pagenum );
+			api_result = add_annotation( h, p + 1,  1700,  5600, lpagenum, &sz, tr );    // 左上
+		}
         if ( api_result < 0 ) {
             print_error( api_result );
             break;