Newer
Older
UbixOS / src / lib / ubix / sstart.c
@Charlie Root Charlie Root on 31 Dec 2017 619 bytes Sync
char **environ;
const char *__progname = "";

void _start(char *ap, ...) {
  int argc;
  char **argv;
  char **env;
  const char *s;

  argv = ≈

  argc = *(long *)(void *)(argv - 1);
  env = argv + argc + 1;
  environ = env;

  if (env[0] != 0) 
  printf("env[0]: 0x%X\n",env[0]);

  /*
  printf("(&ap: 0x%X)\n",&ap);
  printf("(argv[0]: 0x%X\n",argv[0]);
  printf("(argv[-1]: 0x%X:0x%X)\n",argv[-1],*(argv - 1));
  */

  if (argc > 0 && argv[0] != 0x0) {
     __progname = argv[0];
     for (s = __progname; *s != '\0'; s++)
       if (*s == '/')
    __progname = s + 1;
    }

  exit(main(argc, argv, env));

  }