1 #include <proto/locale.h>
2 #include <proto/exec.h>
3 #include <proto/utility.h>
4 #include <utility/hooks.h>
5 #include <libraries/locale.h>
6 #include <dos/datetime.h>
7 #include <utility/date.h>
8 #include <aros/asmcall.h>
13 struct LocaleBase
* LocaleBase
;
14 struct UtilityBase
* UtilityBase
;
16 AROS_UFH3(void, printchar
,
17 AROS_UFHA(struct Hook
*, myhook
, A0
),
18 AROS_UFHA(struct Locale
*, locale
, A2
),
19 AROS_UFHA(char, c
, A1
))
23 if ('\0' != c
) printf("%c",c
);
40 void formatstring_test(struct Locale
* locale
)
43 char hello
[] = {"Hello"};
44 char local
[] = {"Locale"};
45 char welcomes
[] = {"welcomes"};
48 struct Data dataStream
=
57 myhook
.h_Entry
= (APTR
)printchar
;
59 printf("Doing a simple FormatString test!\n");
62 ** Just a simple test for FormatString
64 FormatString(locale
, "%s! %s %s %s %u %u %lx!\n", &dataStream
, &myhook
);
65 FormatString(locale
, "%4$s! (%5$u %7$lX %6$u %6$U %7$lU) %1$.3s %2$20s %3$s %4$s!\n", &dataStream
, &myhook
);
68 void formatdate_test(struct Locale
* locale
)
71 struct DateStamp date
;
72 struct ClockData cdata
;
75 myhook
.h_Entry
= (APTR
)printchar
;
77 printf("Doing a simple FormatDate test!\n");
80 ** Just a simple test for FormatString
89 cdata
.wday
= 0; // don't care
91 seconds
= Date2Amiga(&cdata
);
92 date
.ds_Days
= seconds
/ 86400;
93 seconds
= seconds
% 86400;
94 date
.ds_Minute
= seconds
/ 60;
95 seconds
= seconds
% 60;
96 date
.ds_Tick
= seconds
* 50;
98 FormatDate(locale
, "24hour style (leading 0s): %H\n", &date
, &myhook
);
99 FormatDate(locale
, "12hour style (leading 0s): %I\n", &date
, &myhook
);
100 FormatDate(locale
, "24hour style: %q\n", &date
, &myhook
);
101 FormatDate(locale
, "12hour style: %Q\n", &date
, &myhook
);
102 FormatDate(locale
, "Number of seconds (leading 0s): %S\n", &date
, &myhook
);
103 FormatDate(locale
, "H:M:S style (T): %T\n", &date
, &myhook
);
104 FormatDate(locale
, "H:M:S style (X): %X\n", &date
, &myhook
);
113 cdata
.wday
= 0; // don't care
115 seconds
= Date2Amiga(&cdata
);
116 date
.ds_Days
= seconds
/ 86400;
117 seconds
= seconds
% 86400;
118 date
.ds_Minute
= seconds
/ 60;
119 seconds
= seconds
% 60;
120 date
.ds_Tick
= seconds
* 50;
122 FormatDate(locale
, "24hour style (leading 0s): %H\n", &date
, &myhook
);
123 FormatDate(locale
, "12hour style (leading 0s): %I\n", &date
, &myhook
);
124 FormatDate(locale
, "24hour style: %q\n", &date
, &myhook
);
125 FormatDate(locale
, "12hour style: %Q\n", &date
, &myhook
);
126 FormatDate(locale
, "Number of seconds (leading 0s): %S\n", &date
, &myhook
);
127 FormatDate(locale
, "%%H:%%M:%%S style (T): %T\n", &date
, &myhook
);
128 FormatDate(locale
, "%%H:%%M:%%S style (X): %X\n", &date
, &myhook
);
131 FormatDate(locale
, "%%a %%b %%d %%h:%%m:%%s %%y style: %c\n", &date
, &myhook
);
132 FormatDate(locale
, "%%a %%b %%e %%T %%Z %%Y style: %C\n", &date
, &myhook
);
133 FormatDate(locale
, "%%m/%%d/%%y style: %D\n", &date
, &myhook
);
135 FormatDate(locale
, "Week number - Sunday first day of week: %U\n", &date
, &myhook
);
136 FormatDate(locale
, "Week number - Monday first day of week: %W\n", &date
, &myhook
);
141 void getstringtest(struct Locale
* locale
)
143 struct Catalog
* cat
;
146 printf("Please enter name of catalog: ");
149 cat
= OpenCatalogA(locale
,catname
,NULL
);
155 CONST_STRPTR str
= GetCatalogStr(cat
, i
, NULL
);
157 printf("ID: %d - string : %s\n",i
,str
);
168 LocaleBase
= (struct LocaleBase
*)OpenLibrary("locale.library",0);
169 UtilityBase
= (struct UtilityBase
*)OpenLibrary("utility.library",0);
173 struct Locale
* locale
;
174 locale
= OpenLocale(NULL
);
175 formatstring_test(locale
);
176 formatdate_test(locale
);
177 getstringtest(locale
);
179 if (locale
) CloseLocale(locale
);
183 printf("A library could not be opened!\n");
186 if (LocaleBase
) CloseLibrary((struct Library
*)LocaleBase
);
187 if (UtilityBase
) CloseLibrary((struct Library
*)UtilityBase
);