polylib 5.22.8
param.c
Go to the documentation of this file.
1#include <stdio.h>
2#include <stdlib.h>
3#include <string.h>
4
5#include <polylib/polylib.h>
6
7/****************************************************/
8/* Read_ParamNames() : */
9/* Reads FILE *in for the parameter names */
10/* if in==NULL or not enough parameters on input, */
11/* use default names */
12/* returns an n-array of strings */
13/****************************************************/
14const char **Read_ParamNames(FILE *in, int m) {
15 char **param_name;
16 int c, i, j, f;
17 char s[1024], param[32];
18
19 if (!in)
20 f = 0;
21 else
22 do
23 f = (fgets(s, 1024, in) != NULL);
24 while (f && (*s == '#' || *s == '\n'));
25
26 param_name = (char **)malloc(m * sizeof(char *));
27 i = 0;
28 if (f) {
29 c = 0;
30 for (; i < m; ++i) {
31 j = 0;
32 for (;; ++c) {
33 if (s[c] == ' ') {
34 if (j == 0)
35 continue;
36 else
37 break;
38 }
39 if (s[c] == '\n' || s[c] == 0)
40 break;
41 param[j++] = s[c];
42 }
43
44 /* Not enough parameters on input, end */
45 if (j == 0)
46 break;
47 param[j] = 0;
48 param_name[i] = (char *)malloc((j + 1) * sizeof(char));
49 strcpy(param_name[i], param);
50 }
51 }
52
53 /* Not enough parameters on input : use default names */
54 if (!f || i != m) {
55 for (; i < m; ++i) {
56 param_name[i] = (char *)malloc(2 * sizeof(char));
57 sprintf(param_name[i], "%c", PCHAR + i + 1);
58 }
59 }
60 return (const char **)param_name;
61} /* Read_ParamNames */
62
63void Free_ParamNames(const char **params, int m) {
64 while (--m >= 0)
65 free((char *)params[m]);
66 free(params);
67}
const char ** Read_ParamNames(FILE *in, int m)
Definition: param.c:14
void Free_ParamNames(const char **params, int m)
Definition: param.c:63
static int m
Definition: polyparam.c:274
char s[128]
Definition: polytest.c:8
#define PCHAR
Definition: types.h:27