Changeset d02c998 in rtems-libbsd


Ignore:
Timestamp:
Oct 18, 2013, 9:30:52 AM (8 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
4.11, b96abfd647154f10ea8f7fac68e25676636eded5, ea5d0c78038d92597983c0922a011a62f5dc2dea, b1ecc253eed9695cb63a697c4d47b455e8e9bff4, freebsd-9.3, 5251e0c8164c5fbd01a5c6b4133373926f354eea
Children:
cdf6024
Parents:
dfc416e
git-author:
Sebastian Huber <sebastian.huber@…> (10/18/13 09:30:52)
git-committer:
Sebastian Huber <sebastian.huber@…> (10/31/13 12:18:49)
Message:

ROUTE(8): Adjust port to RTEMS

File:
1 edited

Legend:

Unmodified
Added
Removed
  • freebsd/sbin/route/route.c

    rdfc416e rd02c998  
    4545#define __need_getopt_newlib
    4646#include <getopt.h>
     47#include <machine/rtems-bsd-program.h>
     48#include <machine/rtems-bsd-commands.h>
    4749#endif
    4850#include <rtems/bsd/sys/param.h>
     
    114116};
    115117
     118#ifndef __rtems__
    116119struct rt_ctx rt_ctx;
     120#endif /* __rtems__ */
    117121
    118122typedef union sockunion *sup;
     
    149153
    150154#ifdef __rtems__
    151 #include <machine/rtems-bsd-program.h>
    152 #include <machine/rtems-bsd-commands.h>
    153 
    154 static int main(int argc, char **argv);
     155static int main(int argc, char **argv, struct rt_ctx *c);
     156
     157struct main_ctx {
     158        int argc;
     159        char **argv;
     160        struct rt_ctx *c;
     161};
     162
     163static int
     164call_main(void *ctx)
     165{
     166        const struct main_ctx *mc = ctx;
     167
     168        return main(mc->argc, mc->argv, mc->c);
     169}
    155170
    156171int rtems_bsd_command_route(int argc, char *argv[])
    157172{
    158         return rtems_bsd_program_call_main("route", main, argc, argv);
    159 }
    160 #endif /* __rtems__ */
     173        struct rt_ctx *c;
     174        int exit_code;
     175
     176        c = calloc(1, sizeof(*c));
     177        if (c != NULL) {
     178                struct main_ctx mc;
     179
     180                mc.argc = argc;
     181                mc.argv = argv;
     182                mc.c = c;
     183
     184                c->aflen = sizeof(struct sockaddr_in);
     185
     186                exit_code = rtems_bsd_program_call("route", call_main, &mc);
     187
     188                close(c->s);
     189                free(c);
     190        } else {
     191                exit_code = EXIT_FAILURE;
     192        }
     193
     194        return exit_code;
     195}
     196
     197int
     198main(int argc, char **argv, struct rt_ctx *c)
     199{
     200#else /* __rtems__ */
    161201int
    162202main(argc, argv)
     
    165205{
    166206        struct rt_ctx *c;
     207#endif /* __rtems__ */
    167208        int ch;
    168209#ifdef __rtems__
     
    176217#endif /* __rtems__ */
    177218
     219#ifndef __rtems__
    178220        c = &rt_ctx;
    179221        c->aflen = sizeof (struct sockaddr_in);
     222#endif /* __rtems__ */
    180223
    181224        if (argc < 2)
Note: See TracChangeset for help on using the changeset viewer.