#include #include #include int wgrib2(int argc, char **argv); int wgrib2_(int *n, const char *lines, int len) { int i, argc; char *buf, **argv, *s, *t; argc = *n + 1; buf = (char *) malloc( (argc - 1) * (len+1)); argv = (char **) malloc (argc * sizeof(char *)); if (buf == NULL || argv == NULL) { fprintf(stderr,"fortran callable wgrib2 memory error-not enough free memory\n"); return 1; } fprintf(stderr,">>> 1\n"); argv[0] = "fort-wgrib2_interface"; for (i = 1; i < argc; i++) { argv[i] = buf + (i-1)*(len+i); strncpy(argv[i], lines+(i-1)*len, len); argv[i][len] = 0; s = argv[i]; t = argv[i]+len-1; while (t >= s && *t == ' ') *t-- = '\0'; } fprintf(stderr,">>> 2\n"); for (i = 0; i < argc; i++) { fprintf(stderr, "%d (%s)\n", i, argv[i]); } i = wgrib2(argc, argv); return i; }