* mainproc.c (list_node): Show sigs with --verbose.
authorDavid Shaw <dshaw@jabberwocky.com>
Sat, 24 Jan 2004 00:47:45 +0000 (00:47 +0000)
committerDavid Shaw <dshaw@jabberwocky.com>
Sat, 24 Jan 2004 00:47:45 +0000 (00:47 +0000)
* options.h, g10.c (set_screen_dimensions): New function to look at
COLUMNS and LINES.

* keyserver.c (parse_keyrec, keyserver_search_prompt), keyedit.c
(print_and_check_one_sig): Use new screen dimension variables.

g10/ChangeLog
g10/g10.c
g10/keyedit.c
g10/keyserver.c
g10/mainproc.c
g10/options.h

index 8aebfad..d157751 100644 (file)
@@ -1,3 +1,13 @@
+2004-01-23  David Shaw  <dshaw@jabberwocky.com>
+
+       * mainproc.c (list_node): Show sigs with --verbose.
+
+       * options.h, g10.c (set_screen_dimensions): New function to look
+       at COLUMNS and LINES.
+
+       * keyserver.c (parse_keyrec, keyserver_search_prompt), keyedit.c
+       (print_and_check_one_sig): Use new screen dimension variables.
+
 2004-01-21  David Shaw  <dshaw@jabberwocky.com>
 
        * g10.c (list_config): New function to dump config options to
index f40b792..0799aaa 100644 (file)
--- a/g10/g10.c
+++ b/g10/g10.c
@@ -870,6 +870,31 @@ set_homedir (char *dir)
 }
 
 
+/* We set the screen dimensions for UI purposes.  Do not allow screens
+   smaller than 80x24 for the sake of simplicity. */
+static void
+set_screen_dimensions(void)
+{
+#ifndef _WIN32
+  char *str;
+
+  str=getenv("COLUMNS");
+  if(str)
+    opt.screen_columns=atoi(str);
+
+  str=getenv("LINES");
+  if(str)
+    opt.screen_lines=atoi(str);
+#endif
+
+  if(opt.screen_columns<80 || opt.screen_columns>255)
+    opt.screen_columns=80;
+
+  if(opt.screen_lines<24 || opt.screen_lines>255)
+    opt.screen_lines=24;
+}
+
+
 static void
 set_cmd( enum cmd_and_opt_values *ret_cmd, enum cmd_and_opt_values new_cmd )
 {
@@ -1366,6 +1391,7 @@ main( int argc, char **argv )
       VERIFY_SHOW_POLICY_URLS|VERIFY_SHOW_NOTATIONS|VERIFY_SHOW_KEYSERVER_URLS;
     opt.trust_model=TM_AUTO;
     opt.mangle_dos_filenames = 0;
+    set_screen_dimensions();
 #if defined (_WIN32)
     set_homedir ( read_w32_registry_string( NULL,
                                     "Software\\GNU\\GnuPG", "HomeDir" ));
index 50383b9..2160773 100644 (file)
@@ -71,7 +71,6 @@ static int enable_disable_key( KBNODE keyblock, int disable );
 static void menu_showphoto( KBNODE keyblock );
 
 static int update_trust=0;
-static int columns=80;
 
 #define CONTROL_D ('D' - 'A' + 1)
 
@@ -165,7 +164,7 @@ print_and_check_one_sig( KBNODE keyblock, KBNODE node,
        else {
            size_t n;
            char *p = get_user_id( sig->keyid, &n );
-           tty_print_utf8_string2( p, n, columns-37 );
+           tty_print_utf8_string2( p, n, opt.screen_columns-37 );
            m_free(p);
        }
        tty_printf("\n");
@@ -1189,15 +1188,6 @@ keyedit_menu( const char *username, STRLIST locusr, STRLIST commands,
        goto leave;
     }
 
-#ifndef _WIN32
-    if(getenv("COLUMNS"))
-      {
-       columns=atoi(getenv("COLUMNS"));
-       if(columns<80 || columns>255)
-         columns=80;
-      }
-#endif
-
     if( sign_mode ) {
        commands = NULL;
        append_to_strlist( &commands, sign_mode == 1? "sign":
index 3c8a769..6328704 100644 (file)
@@ -532,6 +532,8 @@ parse_keyrec(char *keystring)
         does this for us. */
 
       decoded=utf8_to_native(userid,i,0);
+      if(strlen(decoded)>opt.screen_columns-10)
+       decoded[opt.screen_columns-10]='\0';
       iobuf_writestr(work->uidbuf,decoded);
       m_free(decoded);
       iobuf_writestr(work->uidbuf,"\n\t");
@@ -595,12 +597,10 @@ show_prompt(KEYDB_SEARCH_DESC *desc,int numdesc,int count,const char *search)
 static void
 keyserver_search_prompt(IOBUF buffer,const char *searchstr)
 {
-  int i=0,validcount=0,started=0,header=0,count=1;
+  int i=0,validcount=0,started=0,header=0,count=1,numlines=0;
   unsigned int maxlen,buflen;
   KEYDB_SEARCH_DESC *desc;
   byte *line=NULL;
-  /* TODO: Something other than 23?  That's 24-1 (the prompt). */
-  int maxlines=23,numlines=0;
 
   desc=m_alloc(count*sizeof(KEYDB_SEARCH_DESC));
 
@@ -707,7 +707,8 @@ keyserver_search_prompt(IOBUF buffer,const char *searchstr)
 
          if(!opt.with_colons)
            {
-             if(numlines+keyrec->lines>maxlines)
+             /* screen_lines - 1 for the prompt. */
+             if(numlines+keyrec->lines>opt.screen_lines-1)
                {
                  if(show_prompt(desc,i,validcount?count:0,searchstr))
                    break;
index 8fe45c5..4062ab9 100644 (file)
@@ -1005,7 +1005,7 @@ list_node( CTX c, KBNODE node )
        char *p;
        int sigrc = ' ';
 
-       if( !opt.list_sigs )
+       if( !opt.verbose )
            return;
 
        if( sig->sig_class == 0x20 || sig->sig_class == 0x30 )
index c2af79a..4698aea 100644 (file)
@@ -183,6 +183,8 @@ struct {
     int strict;
     int mangle_dos_filenames; 
     int enable_progress_filter;
+    int screen_columns;
+    int screen_lines;
 
 #ifdef ENABLE_CARD_SUPPORT
     const char *ctapi_driver; /* Library to access the ctAPI. */