projects
/
xscreensaver
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
http://ftp.ksu.edu.tw/FTP/FreeBSD/distfiles/xscreensaver-4.23.tar.gz
[xscreensaver]
/
hacks
/
glx
/
molecule.c
diff --git
a/hacks/glx/molecule.c
b/hacks/glx/molecule.c
index a787b0117445be7debcd0d59ce67488246c9aef4..a68302860965508aa7908dcd5950db40cc792732 100644
(file)
--- a/
hacks/glx/molecule.c
+++ b/
hacks/glx/molecule.c
@@
-665,6
+665,14
@@
push_bond (molecule *m, int from, int to)
}
}
+static void
+parse_error (const char *file, int lineno, const char *line)
+{
+ fprintf (stderr, "%s: %s: parse error, line %d: %s\n",
+ progname, file, lineno, line);
+ exit (1);
+}
+
/* This function is crap.
*/
/* This function is crap.
*/
@@
-749,7
+757,8
@@
parse_pdb_data (molecule *m, const char *data, const char *filename, int line)
char *name = (char *) calloc (1, 4);
GLfloat x = -999, y = -999, z = -999;
char *name = (char *) calloc (1, 4);
GLfloat x = -999, y = -999, z = -999;
- sscanf (s+7, " %d ", &id);
+ if (1 != sscanf (s+7, " %d ", &id))
+ parse_error (filename, line, s);
strncpy (name, s+12, 3);
while (isspace(*name)) name++;
strncpy (name, s+12, 3);
while (isspace(*name)) name++;
@@
-762,7
+771,9
@@
parse_pdb_data (molecule *m, const char *data, const char *filename, int line)
*ss = tolower(*ss);
ss++;
}
*ss = tolower(*ss);
ss++;
}
- sscanf (s + 32, " %f %f %f ", &x, &y, &z);
+ if (3 != sscanf (s + 32, " %f %f %f ", &x, &y, &z))
+ parse_error (filename, line, s);
+
/*
fprintf (stderr, "%s: %s: %d: atom: %d \"%s\" %9.4f %9.4f %9.4f\n",
progname, filename, line,
/*
fprintf (stderr, "%s: %s: %d: atom: %d \"%s\" %9.4f %9.4f %9.4f\n",
progname, filename, line,
@@
-776,14
+787,16
@@
parse_pdb_data (molecule *m, const char *data, const char *filename, int line)
char *name = (char *) calloc (1, 4);
GLfloat x = -999, y = -999, z = -999;
char *name = (char *) calloc (1, 4);
GLfloat x = -999, y = -999, z = -999;
- sscanf (s+7, " %d ", &id);
+ if (1 != sscanf (s+7, " %d ", &id))
+ parse_error (filename, line, s);
strncpy (name, s+12, 3);
while (isspace(*name)) name++;
ss = name + strlen(name)-1;
while (isspace(*ss) && ss > name)
*ss-- = 0;
strncpy (name, s+12, 3);
while (isspace(*name)) name++;
ss = name + strlen(name)-1;
while (isspace(*ss) && ss > name)
*ss-- = 0;
- sscanf (s + 30, " %f %f %f ", &x, &y, &z);
+ if (3 != sscanf (s + 30, " %f %f %f ", &x, &y, &z))
+ parse_error (filename, line, s);
/*
fprintf (stderr, "%s: %s: %d: atom: %d \"%s\" %9.4f %9.4f %9.4f\n",
progname, filename, line,
/*
fprintf (stderr, "%s: %s: %d: atom: %d \"%s\" %9.4f %9.4f %9.4f\n",
progname, filename, line,