Changeset 1116 for toilet


Ignore:
Timestamp:
Sep 27, 2006, 9:18:20 AM (14 years ago)
Author:
Sam Hocevar
Message:
  • Implemented figlet's -t (adapt to terminal's width).
Location:
toilet/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • toilet/trunk/configure.ac

    r1087 r1116  
    2626fi
    2727
    28 AC_CHECK_HEADERS(getopt.h)
     28AC_CHECK_HEADERS(getopt.h sys/ioctl.h)
     29
    2930AC_CHECK_FUNCS(getopt_long,
    3031 [AC_DEFINE(HAVE_GETOPT_LONG, 1, Define to 1 if you have the `getopt_long' function.)],
     
    3334    GETOPT_LIBS="${GETOPT_LIBS} -lgnugetopt"])])
    3435AC_SUBST(GETOPT_LIBS)
     36
     37AC_CACHE_CHECK([for TIOCGWINSZ],
     38  [ac_cv_have_tiocgwinsz],
     39  [AC_TRY_COMPILE(
     40    [#include <sys/ioctl.h>],
     41    [struct winsize ws;
     42     ioctl(1, TIOCGWINSZ, &ws);],
     43    ac_cv_have_tiocgwinsz=yes,
     44    ac_cv_have_tiocgwinsz=no)])
     45if test "${ac_cv_have_tiocgwinsz}" = "yes"; then
     46  AC_DEFINE(HAVE_TIOCGWINSZ, 1, [Define if you have TIOCGWINSZ])
     47fi
    3548
    3649CUCUL="no"
  • toilet/trunk/src/main.c

    r1115 r1116  
    2424#   include <getopt.h>
    2525#endif
     26#if defined(HAVE_SYS_IOCTL_H) && defined(TIOCGWINSZ)
     27#   include <sys/ioctl.h>
     28#endif
    2629#include <stdio.h>
    2730#include <string.h>
     
    6871            { "directory", 1, NULL, 'd' },
    6972            { "width", 1, NULL, 'w' },
     73            { "termwidth", 0, NULL, 't' },
    7074            { "gay", 0, NULL, 'g' },
    7175            { "metal", 0, NULL, 'm' },
     
    7781        };
    7882
    79         int c = getopt_long(argc, argv, "d:f:I:w:ghimv",
     83        int c = getopt_long(argc, argv, "d:f:I:w:ghimtv",
    8084                            long_options, &option_index);
    8185#   else
    8286#       define MOREINFO "Try `%s -h' for more information.\n"
    83         int c = getopt(argc, argv, "d:f:I:w:ghimv");
     87        int c = getopt(argc, argv, "d:f:I:w:ghimtv");
    8488#   endif
    8589        if(c == -1)
     
    112116            term_width = atoi(optarg);
    113117            break;
     118        case 't': /* --termwidth */
     119        {
     120#if defined(HAVE_SYS_IOCTL_H) && defined(TIOCGWINSZ)
     121            struct winsize ws;
     122
     123            if((ioctl(1, TIOCGWINSZ, &ws) != -1 ||
     124                ioctl(2, TIOCGWINSZ, &ws) != -1 ||
     125                ioctl(0, TIOCGWINSZ, &ws) != -1) && ws.ws_col != 0)
     126                term_width = ws.ws_col;
     127#endif
     128            break;
     129        }
    114130        case 'i': /* --irc */
    115131            export = "irc";
     
    222238static void usage(void)
    223239{
    224     printf("Usage: toilet [ -ghimv ] [ -d fontdirectory ]\n");
     240    printf("Usage: toilet [ -ghimtv ] [ -d fontdirectory ]\n");
    225241    printf("              [ -f fontfile ] [ -w outputwidth ]\n");
    226242    printf("              [ -I infocode ] [ message ]\n");
     
    229245    printf("  -d, --directory <dir>    specify font directory\n");
    230246    printf("  -w, --width <width>      set output width\n");
     247    printf("  -t, --termwidth          adapt to terminal's width\n");
    231248    printf("  -g, --gay                add a rainbow effect to the text\n");
    232249    printf("  -m, --metal              add a metal effect to the text\n");
     
    239256    printf("  -d <dir>         specify font directory\n");
    240257    printf("  -w <width>       set output width\n");
     258    printf("  -t               adapt to terminal's width\n");
    241259    printf("  -g               add a rainbow effect to the text\n");
    242260    printf("  -m               add a metal effect to the text\n");
Note: See TracChangeset for help on using the changeset viewer.