projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
categoricals: Improve comments.
[pspp]
/
src
/
data
/
format.c
diff --git
a/src/data/format.c
b/src/data/format.c
index 21162a05ae4f4ab21aff8012def2fdcd83d30123..5a347d4d58e18acc904abf03f099252c14f71a1b 100644
(file)
--- a/
src/data/format.c
+++ b/
src/data/format.c
@@
-293,6
+293,16
@@
fmt_for_output_from_input (const struct fmt_spec *input)
case FMT_MONTH:
break;
case FMT_MONTH:
break;
+ case FMT_MTIME:
+ if (input->d)
+ output.w = MAX (input->w, input->d + 6);
+ break;
+
+ case FMT_YMDHMS:
+ if (input->w)
+ output.w = MAX (input->w, input->d + 20);
+ break;
+
default:
NOT_REACHED ();
}
default:
NOT_REACHED ();
}
@@
-475,8
+485,10
@@
fmt_equal (const struct fmt_spec *a, const struct fmt_spec *b)
return a->type == b->type && a->w == b->w && a->d == b->d;
}
return a->type == b->type && a->w == b->w && a->d == b->d;
}
-/* Adjusts FMT to be valid for a value of the given WIDTH. */
-void
+/* Adjusts FMT to be valid for a value of the given WIDTH if necessary.
+ If nothing needed to be changed the return value is false
+ */
+bool
fmt_resize (struct fmt_spec *fmt, int width)
{
if ((width > 0) != fmt_is_string (fmt->type))
fmt_resize (struct fmt_spec *fmt, int width)
{
if ((width > 0) != fmt_is_string (fmt->type))
@@
-494,7
+506,9
@@
fmt_resize (struct fmt_spec *fmt, int width)
else
{
/* Still numeric. */
else
{
/* Still numeric. */
+ return false;
}
}
+ return true;
}
/* Adjusts FMT's width and decimal places to be valid for USE. */
}
/* Adjusts FMT's width and decimal places to be valid for USE. */
@@
-715,6
+729,14
@@
fmt_max_decimals (enum fmt_type type, int width, enum fmt_use use)
max_d = width - 21;
break;
max_d = width - 21;
break;
+ case FMT_YMDHMS:
+ max_d = width - 20;
+ break;
+
+ case FMT_MTIME:
+ max_d = width - 6;
+ break;
+
case FMT_TIME:
max_d = width - 9;
break;
case FMT_TIME:
max_d = width - 9;
break;
@@
-942,6
+964,16
@@
fmt_date_template (enum fmt_type type, int width)
s2 = "dd-mmm-yyyy HH:MM:SS";
break;
s2 = "dd-mmm-yyyy HH:MM:SS";
break;
+ case FMT_YMDHMS:
+ s1 = "yyyy-mm-dd HH:MM";
+ s2 = "yyyy-mm-dd HH:MM:SS";
+ break;
+
+ case FMT_MTIME:
+ s1 = "MM";
+ s2 = "MM:SS";
+ break;
+
case FMT_TIME:
s1 = "H:MM";
s2 = "H:MM:SS";
case FMT_TIME:
s1 = "H:MM";
s2 = "H:MM:SS";
@@
-986,6
+1018,8
@@
fmt_gui_name (enum fmt_type type)
case FMT_MOYR:
case FMT_WKYR:
case FMT_DATETIME:
case FMT_MOYR:
case FMT_WKYR:
case FMT_DATETIME:
+ case FMT_YMDHMS:
+ case FMT_MTIME:
case FMT_TIME:
case FMT_DTIME:
case FMT_WKDAY:
case FMT_TIME:
case FMT_DTIME:
case FMT_WKDAY:
@@
-1154,3
+1188,6
@@
get_fmt_desc (enum fmt_type type)
}
const struct fmt_spec F_8_0 = {FMT_F, 8, 0};
}
const struct fmt_spec F_8_0 = {FMT_F, 8, 0};
+const struct fmt_spec F_8_2 = {FMT_F, 8, 2};
+const struct fmt_spec F_4_3 = {FMT_F, 4, 3};
+const struct fmt_spec F_5_1 = {FMT_F, 5, 1};