mirror of https://github.com/BOINC/boinc.git
*** empty log message ***
svn path=/trunk/boinc_samples/; revision=11842
This commit is contained in:
parent
1f6fa079f1
commit
4b38fc0653
|
@ -259,3 +259,11 @@ David 27 Dec 2006
|
|||
|
||||
uppercase/
|
||||
upper_case.C
|
||||
|
||||
David 11 Jan 2006
|
||||
- upper_case: if checkpoint found,
|
||||
truncate the output file to the indicated size.
|
||||
Otherwise a checkpoint/restart generally produces a bad result.
|
||||
|
||||
uppercase/
|
||||
upper_case.C
|
||||
|
|
|
@ -19,7 +19,7 @@ CXXFLAGS = -g \
|
|||
-L.
|
||||
|
||||
# the following should be freeglut; use nm to check
|
||||
LIBGLUT = /usr/lib/libglut.a
|
||||
LIBGLUT = /usr/local/lib/libglut.a
|
||||
LIBGLU = /usr/X11R6/lib/libGLU.a
|
||||
LIBJPEG = /usr/lib/libjpeg.a
|
||||
|
||||
|
|
|
@ -105,43 +105,56 @@ int do_checkpoint(MFILE& mf, int nchars) {
|
|||
|
||||
|
||||
void worker() {
|
||||
int c, nchars = 0, retval;
|
||||
int c, nchars = 0, retval, n;
|
||||
double fsize;
|
||||
char resolved_name[512];
|
||||
char input_path[512], output_path[512], chkpt_path[512];
|
||||
MFILE out;
|
||||
FILE* state, *infile;
|
||||
|
||||
boinc_resolve_filename(INPUT_FILENAME, resolved_name, sizeof(resolved_name));
|
||||
infile = boinc_fopen(resolved_name, "r");
|
||||
// open the input file (resolve logical name first)
|
||||
//
|
||||
boinc_resolve_filename(INPUT_FILENAME, input_path, sizeof(input_path));
|
||||
infile = boinc_fopen(input_path, "r");
|
||||
if (!infile) {
|
||||
fprintf(
|
||||
stderr,
|
||||
"Couldn't find input file, resolved name %s.\n",
|
||||
resolved_name
|
||||
fprintf(stderr,
|
||||
"Couldn't find input file, resolved name %s.\n", input_path
|
||||
);
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
file_size(resolved_name, fsize);
|
||||
// get size of input file (used to compute fraction done)
|
||||
//
|
||||
file_size(input_path, fsize);
|
||||
|
||||
boinc_resolve_filename(CHECKPOINT_FILE, resolved_name, sizeof(resolved_name));
|
||||
state = boinc_fopen(resolved_name, "r");
|
||||
// open output file
|
||||
//
|
||||
boinc_resolve_filename(OUTPUT_FILENAME, output_path, sizeof(output_path));
|
||||
|
||||
// See if there's a valid checkpoint file.
|
||||
// If so seek input file and truncate output file
|
||||
//
|
||||
boinc_resolve_filename(CHECKPOINT_FILE, chkpt_path, sizeof(chkpt_path));
|
||||
state = boinc_fopen(chkpt_path, "r");
|
||||
if (state) {
|
||||
fscanf(state, "%d", &nchars);
|
||||
n = fscanf(state, "%d", &nchars);
|
||||
fclose(state);
|
||||
}
|
||||
if (state && n==1) {
|
||||
fseek(infile, nchars, SEEK_SET);
|
||||
boinc_resolve_filename(OUTPUT_FILENAME, resolved_name, sizeof(resolved_name));
|
||||
retval = out.open(resolved_name, "a");
|
||||
boinc_truncate(output_path, nchars);
|
||||
retval = out.open(output_path, "a");
|
||||
} else {
|
||||
boinc_resolve_filename(OUTPUT_FILENAME, resolved_name, sizeof(resolved_name));
|
||||
retval = out.open(resolved_name, "w");
|
||||
retval = out.open(output_path, "w");
|
||||
}
|
||||
if (retval) {
|
||||
fprintf(stderr, "APP: upper_case output open failed:\n");
|
||||
fprintf(stderr, "resolved name %s, retval %d\n", resolved_name, retval);
|
||||
fprintf(stderr, "resolved name %s, retval %d\n", output_path, retval);
|
||||
perror("open");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// main loop - read characters, convert to UC, write
|
||||
//
|
||||
for (int i=0; ; i++) {
|
||||
c = fgetc(infile);
|
||||
|
||||
|
@ -180,11 +193,15 @@ void worker() {
|
|||
|
||||
boinc_fraction_done(nchars/fsize);
|
||||
}
|
||||
|
||||
retval = out.flush();
|
||||
if (retval) {
|
||||
fprintf(stderr, "APP: upper_case flush failed %d\n", retval);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// burn up some CPU time if needed
|
||||
//
|
||||
if (cpu_time) {
|
||||
double start = dtime();
|
||||
while (1) {
|
||||
|
|
Loading…
Reference in New Issue