print_1_cfg(lcfg);
break;
}
+ case(LCFG_SPTLRPC_CONF):{
+ printf("sptlrpc_conf ");
+ print_1_cfg(lcfg);
+ break;
+ }
case(LCFG_MARKER):{
struct cfg_marker *marker = lustre_cfg_buf(lcfg, 1);
char createtime[26], canceltime[26] = "";
+ time_t time_tmp;
if (marker->cm_flags & CM_SKIP) {
if (marker->cm_flags & CM_START) {
*skip = 0;
}
}
+
if (marker->cm_flags & CM_EXCLUDE) {
if (marker->cm_flags & CM_START)
printf("EXCLUDE START ");
else
printf("EXCLUDE END ");
}
- ctime_r(&marker->cm_createtime, createtime);
- createtime[strlen(createtime) - 1] = 0;
+
+ /* Handle overflow of 32-bit time_t gracefully.
+ * The copy to time_tmp is needed in any case to
+ * keep the pointer happy, even on 64-bit systems. */
+ time_tmp = marker->cm_createtime;
+ if (time_tmp == marker->cm_createtime) {
+ ctime_r(&time_tmp, createtime);
+ createtime[strlen(createtime) - 1] = 0;
+ } else {
+ strcpy(createtime, "in the distant future");
+ }
+
if (marker->cm_canceltime) {
- ctime_r(&marker->cm_canceltime, canceltime);
- canceltime[strlen(canceltime) - 1] = 0;
+ /* Like cm_createtime, we try to handle overflow of
+ * 32-bit time_t gracefully. The copy to time_tmp
+ * is also needed on 64-bit systems to keep the
+ * pointer happy, see bug 16771 */
+ time_tmp = marker->cm_canceltime;
+ if (time_tmp == marker->cm_canceltime) {
+ ctime_r(&time_tmp, canceltime);
+ canceltime[strlen(canceltime) - 1] = 0;
+ } else {
+ strcpy(canceltime, "in the distant future");
+ }
}
+
printf("marker %3d (flags=%#04x, v%d.%d.%d.%d) %-15s '%s' %s-%s",
marker->cm_step, marker->cm_flags,
OBD_OCD_VERSION_MAJOR(marker->cm_vers),