Changeset 2258 for libpipi


Ignore:
Timestamp:
Mar 11, 2008, 3:56:14 PM (12 years ago)
Author:
Sam Hocevar
Message:
  • Add getopt and getopt_long support to genethumb.
Location:
libpipi/trunk
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • libpipi/trunk/configure.ac

    r2228 r2258  
    2626AC_C_INLINE
    2727
    28 AC_CHECK_HEADERS(stdio.h stdarg.h inttypes.h endian.h stdint.h)
     28AC_CHECK_HEADERS(stdio.h stdarg.h inttypes.h endian.h stdint.h getopt.h)
     29
     30ac_cv_have_getopt_long="no"
     31AC_CHECK_FUNCS(getopt_long,
     32 [ac_cv_have_getopt_long="yes"],
     33 [AC_CHECK_LIB(gnugetopt, getopt_long,
     34   [ac_cv_have_getopt_long="yes"
     35    GETOPT_LIBS="${GETOPT_LIBS} -lgnugetopt"])])
     36if test "$ac_cv_have_getopt_long" != "no"; then
     37  AC_DEFINE(HAVE_GETOPT_LONG, 1, Define to 1 if you have the `getopt_long' function.)
     38fi
     39AM_CONDITIONAL(NEED_GETOPT_LONG, test "$ac_cv_have_getopt_long" = "no")
     40AC_SUBST(GETOPT_LIBS)
    2941
    3042# Optimizations
  • libpipi/trunk/genethumb/Makefile.am

    r2227 r2258  
    33AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/pipi
    44
     5if NEED_GETOPT_LONG
     6GETOPT = mygetopt.c mygetopt.h
     7endif
     8
    59bin_PROGRAMS = genethumb
    610
    7 genethumb_SOURCES = genethumb.c
    8 genethumb_LDADD = ../pipi/libpipi.la
     11genethumb_SOURCES = genethumb.c $(GETOPT)
     12genethumb_LDADD = ../pipi/libpipi.la $(GETOPT_LIBS)
    913
  • libpipi/trunk/genethumb/genethumb.c

    r2247 r2258  
    22#include "common.h"
    33
     4#if !defined HAVE_GETOPT_LONG
     5#   include "mygetopt.h"
     6#elif defined HAVE_GETOPT_H
     7#   include <getopt.h>
     8#endif
     9
     10#include <stdio.h>
     11#include <stdlib.h>
     12#include <string.h>
     13
    414#include <pipi.h>
    515
    6 int main(void)
     16#if defined HAVE_GETOPT_LONG
     17#   define mygetopt getopt_long
     18#   define myoptind optind
     19#   define myoptarg optarg
     20#   define myoption option
     21#endif
     22
     23#define MOREINFO "Try `%s --help' for more information.\n"
     24
     25int main(int argc, char *argv[])
    726{
    8     pipi_image_t *i, *j;
     27    char *srcname = NULL, *dstname = NULL;
     28    pipi_image_t *src, *dst;
    929
    10     i = pipi_load("irc.png");
    11     j = pipi_resize(i, 180, 180);
    12     pipi_save(j, "irc.bmp");
    13     pipi_free(i);
    14     pipi_free(j);
     30    int i, w = 0, h = 0;
     31
     32    for(;;)
     33    {
     34        int option_index = 0;
     35        static struct myoption long_options[] =
     36        {
     37            { "geometry",    1, NULL, 'g' },
     38        };
     39        int c = mygetopt(argc, argv, "g:", long_options, &option_index);
     40
     41        if(c == -1)
     42            break;
     43
     44        switch(c)
     45        {
     46        case 'g':
     47            w = atoi(myoptarg);
     48            if(strchr(myoptarg, 'x'))
     49                h = atoi(strchr(myoptarg, 'x') + 1);
     50            break;
     51        default:
     52            fprintf(stderr, "%s: invalid option -- %c\n", argv[0], c);
     53            printf(MOREINFO, argv[0]);
     54            return EXIT_FAILURE;
     55        }
     56    }
     57
     58    for(i = myoptind; i < argc; i++)
     59    {
     60        if(!srcname)
     61            srcname = argv[i];
     62        else
     63            dstname = argv[i];
     64    }
     65
     66    src = pipi_load(srcname);
     67    dst = pipi_resize(src, w, h);
     68    pipi_save(dst, dstname);
     69    pipi_free(src);
     70    pipi_free(dst);
    1571
    1672    return 0;
Note: See TracChangeset for help on using the changeset viewer.