return (UDateFormat*)fmt;
} // else fall through.
}
- if(timeStyle != UDAT_IGNORE) {
+ if(timeStyle != UDAT_PATTERN) {
if(locale == 0) {
fmt = DateFormat::createDateTimeInstance((DateFormat::EStyle)dateStyle,
(DateFormat::EStyle)timeStyle);
/** No style */
UDAT_NONE = -1,
- /** for internal API use only */
- UDAT_IGNORE = -2
+ /**
+ * Use the pattern given in the parameter to udat_open
+ * @see udat_open
+ * @draft ICU 50
+ */
+ UDAT_PATTERN = -2,
+
+ /** @internal alias to UDAT_PATTERN */
+ UDAT_IGNORE = UDAT_PATTERN,
} UDateFormatStyle;
/* Cannot use #ifndef U_HIDE_DRAFT_API for UDateFormatContextType and UDateFormatContextValue
* @param timeStyle The style used to format times; one of UDAT_FULL, UDAT_LONG,
* UDAT_MEDIUM, UDAT_SHORT, UDAT_DEFAULT, or UDAT_NONE (relative time styles
* are not currently supported).
+ * When the pattern parameter is used, pass in UDAT_PATTERN for both timeStyle and dateStyle.
* @param dateStyle The style used to format dates; one of UDAT_FULL, UDAT_LONG,
* UDAT_MEDIUM, UDAT_SHORT, UDAT_DEFAULT, UDAT_FULL_RELATIVE, UDAT_LONG_RELATIVE,
- * UDAT_MEDIUM_RELATIVE, UDAT_SHORT_RELATIVE, or UDAT_NONE. As currently implemented,
+ * UDAT_MEDIUM_RELATIVE, UDAT_SHORT_RELATIVE, or UDAT_NONE.
+ * When the pattern parameter is used, pass in UDAT_PATTERN for both timeStyle and dateStyle.
+ * As currently implemented,
* relative date formatting only affects a limited range of calendar days before or
* after the current date, based on the CLDR <field type="day">/<relative> data: For
* example, in English, "Yesterday", "Today", and "Tomorrow". Outside of this range,
#include <stdlib.h>
#include <string.h>
+#include "putilimp.h"
+UDate startTime = -1.0;
+
+static int elapsedTime() {
+ return (int)uprv_floor((uprv_getRawUTCtime()-startTime)/1000.0);
+}
+
+#if U_PLATFORM_IMPLEMENTS_POSIX && !U_PLATFORM_HAS_WIN32_API
+#include <signal.h>
+
+const char *wToolname="gendict";
+const char *wOutname="(some file)";
+
+const int firstSeconds = 5; /* seconds between notices*/
+const int nextSeconds = 15; /* seconds between notices*/
+
+static void alarm_fn(int /*n*/) {
+ printf("%s: still writing\t%s (%ds)\t...\n", wToolname, wOutname, elapsedTime());
+
+ alarm(nextSeconds); // reset the alarm
+}
+
+static void install_watchdog(const char *toolName, const char *outFileName) {
+ wToolname=toolName;
+ wOutname=outFileName;
+
+ if(startTime<0) { // uninitialized
+ startTime = uprv_getRawUTCtime();
+ }
+ signal(SIGALRM, &alarm_fn);
+
+ alarm(firstSeconds); // set the alarm
+}
+
+#else
+static void install_watchdog(const char*, const char*) {
+ // not implemented
+}
+#endif
+
+
+
+
U_NAMESPACE_USE
static char *progName;
const char *outFileName = argv[2];
const char *wordFileName = argv[1];
+ // set up the watchdog
+ install_watchdog(progName, outFileName);
+
if (options[ARG_ICUDATADIR].doesOccur) {
u_setDataDirectory(options[ARG_ICUDATADIR].value);
}
exit(U_INTERNAL_PROGRAM_ERROR);
}
- puts("gendict: tool completed successfully.");
+ printf("%s: done writing\t%s (%ds).\n", progName, outFileName, elapsedTime());
#ifdef TEST_GENDICT
if (isBytesTrie) {