Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
mpim-sw
cdo
Commits
9d8fbe5d
Commit
9d8fbe5d
authored
Dec 28, 2017
by
Uwe Schulzweida
Browse files
Merge declaration and initialization.
parent
fea88743
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/Command.cc
View file @
9d8fbe5d
...
@@ -93,10 +93,9 @@ int valid_argument (char *caller, char *arg)
...
@@ -93,10 +93,9 @@ int valid_argument (char *caller, char *arg)
/* Print out help for ARG, or for all of the commands if ARG is not present. */
/* Print out help for ARG, or for all of the commands if ARG is not present. */
int
com_help
(
const
char
*
arg
)
int
com_help
(
const
char
*
arg
)
{
{
int
i
;
int
printed
=
0
;
int
printed
=
0
;
for
(
i
=
0
;
commands
[
i
].
name
;
i
++
)
for
(
int
i
=
0
;
commands
[
i
].
name
;
i
++
)
{
{
if
(
!*
arg
||
(
strcmp
(
arg
,
commands
[
i
].
name
)
==
0
))
if
(
!*
arg
||
(
strcmp
(
arg
,
commands
[
i
].
name
)
==
0
))
{
{
...
@@ -108,7 +107,7 @@ int com_help(const char *arg)
...
@@ -108,7 +107,7 @@ int com_help(const char *arg)
if
(
!
printed
)
if
(
!
printed
)
{
{
printf
(
"No commands match '%s'. Possibilties are:
\n
"
,
arg
);
printf
(
"No commands match '%s'. Possibilties are:
\n
"
,
arg
);
for
(
i
=
0
;
commands
[
i
].
name
;
i
++
)
for
(
int
i
=
0
;
commands
[
i
].
name
;
i
++
)
{
{
/* Print in six columns. */
/* Print in six columns. */
if
(
printed
==
6
)
if
(
printed
==
6
)
...
@@ -148,17 +147,14 @@ int com_quit(const char *arg)
...
@@ -148,17 +147,14 @@ int com_quit(const char *arg)
int
com_stat
(
const
char
*
arg
)
int
com_stat
(
const
char
*
arg
)
{
{
int
nrecs
;
int
tsID
;
UNUSED
(
arg
);
UNUSED
(
arg
);
fprintf
(
stdout
,
"name=%s
\n
"
,
all_vars
[
gl_varID
].
name
);
fprintf
(
stdout
,
"name=%s
\n
"
,
all_vars
[
gl_varID
].
name
);
for
(
tsID
=
gl_tsID1
;
tsID
<=
gl_tsID2
;
++
tsID
)
for
(
int
tsID
=
gl_tsID1
;
tsID
<=
gl_tsID2
;
++
tsID
)
{
{
nrecs
=
streamInqTimestep
(
gl_streamID
,
tsID
);
int
nrecs
=
streamInqTimestep
(
gl_streamID
,
tsID
);
if
(
nrecs
==
0
)
if
(
nrecs
==
0
)
{
{
fprintf
(
stderr
,
"Timestep %d out of range!
\n
"
,
tsID
+
1
);
fprintf
(
stderr
,
"Timestep %d out of range!
\n
"
,
tsID
+
1
);
...
@@ -204,17 +200,16 @@ int com_set(const char *arg)
...
@@ -204,17 +200,16 @@ int com_set(const char *arg)
int
com_vars
(
const
char
*
arg
)
int
com_vars
(
const
char
*
arg
)
{
{
int
varID
;
char
paramstr
[
32
];
char
paramstr
[
32
];
if
(
!
arg
)
arg
=
""
;
if
(
!
arg
)
arg
=
""
;
printf
(
"com_vars: %s %d
\n
"
,
arg
,
gl_nvars
);
printf
(
"com_vars: %s %d
\n
"
,
arg
,
gl_nvars
);
for
(
varID
=
0
;
varID
<
gl_nvars
;
++
varID
)
for
(
int
varID
=
0
;
varID
<
gl_nvars
;
++
varID
)
{
{
cdiParamToString
(
all_vars
[
varID
].
param
,
paramstr
,
sizeof
(
paramstr
));
cdiParamToString
(
all_vars
[
varID
].
param
,
paramstr
,
sizeof
(
paramstr
));
fprintf
(
stdout
,
"varID=%3d, param=%s, name=%s
%s %s
\n
"
,
fprintf
(
stdout
,
"varID=%3d, param=%s, name=%s
, longname=
\"
%s
\"
, units=
\"
%s
\"
\n
"
,
varID
+
1
,
paramstr
,
all_vars
[
varID
].
name
,
all_vars
[
varID
].
longname
,
all_vars
[
varID
].
units
);
varID
+
1
,
paramstr
,
all_vars
[
varID
].
name
,
all_vars
[
varID
].
longname
,
all_vars
[
varID
].
units
);
}
}
...
@@ -232,44 +227,40 @@ command_t *find_command(char *name)
...
@@ -232,44 +227,40 @@ command_t *find_command(char *name)
return
(
command_t
*
)
NULL
;
return
(
command_t
*
)
NULL
;
}
}
/
*
Execute a command line.
*/
/
/
Execute a command line.
int
execute_line
(
char
*
line
)
int
execute_line
(
char
*
line
)
{
{
int
i
;
// Isolate the command word.
command_t
*
command
;
int
i
=
0
;
char
*
word
;
/* Isolate the command word. */
i
=
0
;
while
(
line
[
i
]
&&
isspace
(
line
[
i
])
)
i
++
;
while
(
line
[
i
]
&&
isspace
(
line
[
i
])
)
i
++
;
word
=
line
+
i
;
char
*
word
=
line
+
i
;
while
(
line
[
i
]
&&
!
isspace
(
line
[
i
])
)
i
++
;
while
(
line
[
i
]
&&
!
isspace
(
line
[
i
])
)
i
++
;
if
(
line
[
i
]
)
line
[
i
++
]
=
'\0'
;
if
(
line
[
i
]
)
line
[
i
++
]
=
'\0'
;
command
=
find_command
(
word
);
command
_t
*
command
=
find_command
(
word
);
if
(
!
command
)
if
(
!
command
)
{
{
fprintf
(
stderr
,
"%s: No such command!
\n
"
,
word
);
fprintf
(
stderr
,
"%s: No such command!
\n
"
,
word
);
return
-
1
;
return
-
1
;
}
}
/
*
Get argument to command, if any.
*/
/
/
Get argument to command, if any.
while
(
isspace
(
line
[
i
])
)
i
++
;
while
(
isspace
(
line
[
i
])
)
i
++
;
word
=
line
+
i
;
word
=
line
+
i
;
/
*
Call the function.
*/
/
/
Call the function.
return
(
*
(
command
->
func
))
(
word
);
return
(
*
(
command
->
func
))
(
word
);
}
}
/
*
Strip isspace from the start and end of STRING. Return a pointer into STRING.
*/
/
/
Strip isspace from the start and end of STRING. Return a pointer into STRING.
char
*
stripwhite
(
char
*
string
)
char
*
stripwhite
(
char
*
string
)
{
{
char
*
s
,
*
t
;
char
*
s
;
for
(
s
=
string
;
isspace
(
*
s
);
s
++
)
for
(
s
=
string
;
isspace
(
*
s
);
s
++
)
;
;
if
(
*
s
==
0
)
if
(
*
s
==
0
)
return
s
;
return
s
;
t
=
s
+
strlen
(
s
)
-
1
;
char
*
t
=
s
+
strlen
(
s
)
-
1
;
while
(
t
>
s
&&
isspace
(
*
t
))
while
(
t
>
s
&&
isspace
(
*
t
))
t
--
;
t
--
;
*++
t
=
'\0'
;
*++
t
=
'\0'
;
...
@@ -277,26 +268,44 @@ char *stripwhite(char *string)
...
@@ -277,26 +268,44 @@ char *stripwhite(char *string)
return
s
;
return
s
;
}
}
extern
"C"
{
size_t
getPeakRSS
(
);
}
void
readcmd
(
const
char
*
prompt
,
char
*
line
,
int
size
)
void
readcmd
(
const
char
*
prompt
,
char
*
line
,
int
size
)
{
{
fputs
(
prompt
,
stdout
);
fputs
(
prompt
,
stdout
);
if
(
cdoVerbose
)
{
char
memstring
[
32
]
=
{
""
};
size_t
memmax
=
getPeakRSS
();
if
(
memmax
)
{
size_t
muindex
=
0
;
const
char
*
mu
[]
=
{
"B"
,
"KB"
,
"MB"
,
"GB"
,
"TB"
,
"PB"
};
const
size_t
nmu
=
sizeof
(
mu
)
/
sizeof
(
char
*
);
while
(
memmax
>
9999
&&
muindex
<
nmu
-
1
)
{
memmax
/=
1024
;
muindex
++
;
}
snprintf
(
memstring
,
sizeof
(
memstring
),
"%zu%s"
,
memmax
,
mu
[
muindex
]);
}
fputs
(
" ["
,
stdout
);
fputs
(
memstring
,
stdout
);
fputs
(
"]"
,
stdout
);
}
fputs
(
"> "
,
stdout
);
fflush
(
stdout
);
fflush
(
stdout
);
*
line
=
'\0'
;
*
line
=
'\0'
;
if
(
fgets
(
line
,
size
,
stdin
)
)
if
(
fgets
(
line
,
size
,
stdin
)
)
{
{
char
*
newline
=
strchr
(
line
,
'\n'
);
/
*
check for trailing '\n'
*/
char
*
newline
=
strchr
(
line
,
'\n'
);
/
/
check for trailing '\n'
if
(
newline
)
if
(
newline
)
*
newline
=
'\0'
;
/
*
overwrite the '\n' with a terminating null
*/
*
newline
=
'\0'
;
/
/
overwrite the '\n' with a terminating null
}
}
}
}
void
command_init
()
void
command_init
()
{
{
int
varID
;
gl_vlistID
=
streamInqVlist
(
gl_streamID
);
gl_vlistID
=
streamInqVlist
(
gl_streamID
);
int
taxisID
=
vlistInqTaxis
(
gl_vlistID
);
int
taxisID
=
vlistInqTaxis
(
gl_vlistID
);
...
@@ -308,9 +317,9 @@ void command_init()
...
@@ -308,9 +317,9 @@ void command_init()
gl_nvars
=
vlistNvars
(
gl_vlistID
);
gl_nvars
=
vlistNvars
(
gl_vlistID
);
all_vars
=
(
vars_t
*
)
Malloc
(
gl_nvars
*
sizeof
(
vars_t
));
all_vars
=
(
vars_t
*
)
Malloc
(
gl_nvars
*
sizeof
(
vars_t
));
for
(
varID
=
0
;
varID
<
gl_nvars
;
++
varID
)
for
(
int
varID
=
0
;
varID
<
gl_nvars
;
++
varID
)
{
{
all_vars
[
varID
].
param
=
vlistInqVarParam
(
gl_vlistID
,
varID
);
all_vars
[
varID
].
param
=
vlistInqVarParam
(
gl_vlistID
,
varID
);
vlistInqVarName
(
gl_vlistID
,
varID
,
all_vars
[
varID
].
name
);
vlistInqVarName
(
gl_vlistID
,
varID
,
all_vars
[
varID
].
name
);
vlistInqVarLongname
(
gl_vlistID
,
varID
,
all_vars
[
varID
].
longname
);
vlistInqVarLongname
(
gl_vlistID
,
varID
,
all_vars
[
varID
].
longname
);
vlistInqVarUnits
(
gl_vlistID
,
varID
,
all_vars
[
varID
].
units
);
vlistInqVarUnits
(
gl_vlistID
,
varID
,
all_vars
[
varID
].
units
);
...
@@ -326,7 +335,6 @@ void *Command(void *argument)
...
@@ -326,7 +335,6 @@ void *Command(void *argument)
double
e_utime
,
e_stime
;
double
e_utime
,
e_stime
;
double
c_cputime
=
0
,
c_usertime
=
0
,
c_systime
=
0
;
double
c_cputime
=
0
,
c_usertime
=
0
,
c_systime
=
0
;
char
line
[
MAX_LINE
];
char
line
[
MAX_LINE
];
char
*
s
;
cdoInitialize
(
argument
);
cdoInitialize
(
argument
);
...
@@ -336,37 +344,18 @@ void *Command(void *argument)
...
@@ -336,37 +344,18 @@ void *Command(void *argument)
command_init
();
command_init
();
/
*
Loop reading and executing lines until the user quits.
*/
/
/
Loop reading and executing lines until the user quits.
while
(
!
Done
)
while
(
!
Done
)
{
{
readcmd
(
"cdo cmd
>
"
,
line
,
MAX_LINE
);
readcmd
(
"cdo cmd"
,
line
,
MAX_LINE
);
/* Remove leading and trailing whitespace from the line.
/* Remove leading and trailing whitespace from the line.
Then, if there is anything left, add it to the history list
Then, if there is anything left, add it to the history list
and execute it. */
and execute it. */
s
=
stripwhite
(
line
);
char
*
s
=
stripwhite
(
line
);
if
(
*
s
)
execute_line
(
s
);
if
(
*
s
)
execute_line
(
s
);
}
}
/*
while ( readline(stdin, line, MAX_LINE) )
{
linep = line;
if ( strcmp(linep, "exit") == 0 ) break;
else if ( strcmp(linep, "vars") == 0 )
{
int varID;
int nvars = vlistNvars(gl_vlistID);
for ( varID = 0; varID < nvars; ++nvars )
{
fprintf(stdout,"varID %d\n", varID);
}
}
}
*/
streamClose
(
gl_streamID
);
streamClose
(
gl_streamID
);
if
(
gl_data
)
Free
(
gl_data
);
if
(
gl_data
)
Free
(
gl_data
);
...
...
src/process.cc
View file @
9d8fbe5d
...
@@ -1383,11 +1383,11 @@ void cdoFinish(void)
...
@@ -1383,11 +1383,11 @@ void cdoFinish(void)
#if defined(HAVE_SYS_TIMES_H)
#if defined(HAVE_SYS_TIMES_H)
if
(
cdoBenchmark
)
if
(
cdoBenchmark
)
fprintf
(
stderr
,
"
(
%.2fs %.2fs %.2fs%s
)
\n
"
,
c_usertime
,
c_systime
,
c_cputime
,
memstring
);
fprintf
(
stderr
,
"
[
%.2fs %.2fs %.2fs%s
]
\n
"
,
c_usertime
,
c_systime
,
c_cputime
,
memstring
);
else
else
{
{
if
(
!
cdoSilentMode
)
if
(
!
cdoSilentMode
)
fprintf
(
stderr
,
"
(
%.2fs%s
)
\n
"
,
c_cputime
,
memstring
);
fprintf
(
stderr
,
"
[
%.2fs%s
]
\n
"
,
c_cputime
,
memstring
);
}
}
if
(
cdoBenchmark
&&
processID
==
0
)
if
(
cdoBenchmark
&&
processID
==
0
)
fprintf
(
stderr
,
"total: user %.2fs sys %.2fs cpu %.2fs mem%s
\n
"
,
p_usertime
,
p_systime
,
p_cputime
,
memstring
);
fprintf
(
stderr
,
"total: user %.2fs sys %.2fs cpu %.2fs mem%s
\n
"
,
p_usertime
,
p_systime
,
p_cputime
,
memstring
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment