[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Lost] [Patch] Stubs für die wichtigsten Zeitfunktionen
Am Sonntag, 20. Januar 2008 13.04:21 schrieb Kevin Wolf:
> Antoine Kaufmann schrieb:
> > time_t time();
>
> Wird zwar nicht von diesem Patch geändert, aber das sollte doch time_t
> time(time_t *tloc) sein?
>
> > Index: src/modules/lib/stdlibc/localtime.c
> > ===================================================================
> > --- src/modules/lib/stdlibc/localtime.c (Revision 0)
> > +++ src/modules/lib/stdlibc/localtime.c (Revision 0)
>
> Werden die Funktionen, wenn sie implementiert sind, wirklich so
> umfangreich, daß man sie auf verschiedene Dateien aufteilen muß?
> Ansonsten würde ich eine time.c bevorzugen.
>
> > +#include <sys/types.h>
> > +#include <time.h>
> > +#include <errno.h>
> > +#include <config.h>
> > +
> > +
> > +#ifndef CONFIG_LIBC_NO_STUBS
> > +struct tm tm;
>
> static und am besten mit auffälligen Werten initialisiert.
>
> > +#ifndef CONFIG_LIBC_NO_STUBS
> > +char* asctime_buf = "Wed Jun 30 21:49:08 1993\n";
>
> Hier dasselbe. Dein Defaultwert ist alles andere als gut. Nimm besser
> einen 31. Februar 9999 oder so, wenn ein wirklich guter String wie
> "[asctime() nicht implementiert]" Programme verwirren würde (würde es?)
>
> > Index: src/modules/lib/stdlibc/gmtime.c
> > ===================================================================
> > --- src/modules/lib/stdlibc/gmtime.c (Revision 692)
> > +++ src/modules/lib/stdlibc/gmtime.c (Arbeitskopie)
> > @@ -36,7 +36,9 @@
> > #include <sys/types.h>
> > #include <time.h>
> > #include <string.h>
> > +#include <config.h>
> >
> > +#ifndef CONFIG_LIBC_NO_STUBS
> > struct tm tm;
>
> static
>
> > Index: src/modules/lib/stdlibc/ctime.c
> > ===================================================================
> > --- src/modules/lib/stdlibc/ctime.c (Revision 692)
> > +++ src/modules/lib/stdlibc/ctime.c (Arbeitskopie)
> > @@ -35,7 +35,10 @@
> >
> > #include <sys/types.h>
> > #include <time.h>
> > +#include <config.h>
> >
> > +#ifndef CONFIG_LIBC_NO_STUBS
> > +
> > char* ctime_string = "Wed Jun 42 13:37:42 1337\n";
>
> Na also, geht doch. *g*
>
> Aber auch der sollte static sein.
Ich habe die Funktionen jetzt in die time.c übernommen, und die anderen
vorgeschlagenen Änderungen durchgeführt.
Index: src/modules/include/time.h
===================================================================
--- src/modules/include/time.h (Revision 692)
+++ src/modules/include/time.h (Arbeitskopie)
@@ -36,6 +36,7 @@
#ifndef _TIME_H_
#define _TIME_H_
#include <sys/types.h>
+#include <config.h>
struct tm {
int tm_sec; /// Sekunden 0-60
@@ -50,13 +51,20 @@
};
-time_t time();
+time_t time(time_t* t);
+#ifndef CONFIG_LIBC_NO_STUBS
/// Datum und Uhrzeit in einen String umwandeln
-char *ctime(const time_t *time_ptr);
+char* ctime(const time_t* time_ptr);
+/// Zeit und Datum als String
+char* asctime(const struct tm* time_ptr);
+
/// Timestamp in tm-Struct einfuellen
struct tm* gmtime(const time_t* time_ptr);
+struct tm* localtime(const time_t* time_ptr);
#endif
+#endif
+
Index: src/modules/lib/stdlibc/time.c
===================================================================
--- src/modules/lib/stdlibc/time.c (Revision 692)
+++ src/modules/lib/stdlibc/time.c (Arbeitskopie)
@@ -33,15 +33,32 @@
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#include "time.h"
-#include "stdio.h"
+#include <time.h>
+#include <stdio.h>
+#include <config.h>
+#ifndef CONFIG_LIBC_NO_STUBS
+static struct tm tm = {
+ .tm_wday = 3,
+ .tm_mday = 42,
+ .tm_mon = 6,
+ .tm_year = 1337,
+ .tm_yday = 1337,
+
+ .tm_hour = 13,
+ .tm_min = 37,
+ .tm_sec = 42
+};
+static char* asctime_buf = "Wed Jun 42 13:37:42 1337\n";
+static char* ctime_string = "Wed Jun 42 13:37:42 1337\n";
+#endif
+
/**
* Unix-Timestamp aus der aktuellen Zeit generieren.
*
* @return Unix-Timestamp
*/
-time_t time()
+time_t time(time_t* t)
{
time_t result = 0;
@@ -54,6 +71,59 @@
fread(&result, sizeof(time_t), 1, time_file);
fclose(time_file);
+
+ if (t != NULL) {
+ *t = result;
+ }
return result;
}
+#ifndef CONFIG_LIBC_NO_STUBS
+/**
+ * TODO
+ **/
+struct tm* localtime(const time_t* time)
+{
+ // TODO
+ return &tm;
+}
+
+/**
+ * Timestamp in tm-Struktur einfuellen
+ *
+ * @param time_ptr Pointer auf den Timestamp
+ *
+ * @return Pointer auf die interne statisch allozierte tm-Struktur. Diese kann
+ * bei jedem Aufruf einer Zeitfunktion ueberschrieben werden!
+ */
+struct tm* gmtime(const time_t* time_ptr)
+{
+ // TODO
+ return &tm;
+}
+
+/**
+ * TODO
+ **/
+char* asctime(const struct tm* time)
+{
+ // TODO
+ return asctime_buf;
+}
+
+/**
+ * Datum und Zeit in einen String umwandeln
+ *
+ * @param time_ptr Pointer auf die Zeit
+ *
+ * @return Pointer auf den Buffer mit dem String. Statisch alloziert, kann von
+ * weiteren aufrufen ueberschrieben werden.
+ */
+char* ctime(const time_t* time_ptr)
+{
+ // TODO
+ return ctime_string;
+}
+
+#endif
+
Index: src/modules/lib/stdlibc/ctime.c
===================================================================
--- src/modules/lib/stdlibc/ctime.c (Revision 692)
+++ src/modules/lib/stdlibc/ctime.c (Arbeitskopie)
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2007 The LOST Project. All rights reserved.
- *
- * This code is derived from software contributed to the LOST Project
- * by Antoine Kaufmann.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the LOST Project
- * and its contributors.
- * 4. Neither the name of the LOST Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/types.h>
-#include <time.h>
-
-char* ctime_string = "Wed Jun 42 13:37:42 1337\n";
-
-/**
- * Datum und Zeit in einen String umwandeln
- *
- * @param time_ptr Pointer auf die Zeit
- *
- * @return Pointer auf den Buffer mit dem String. Statisch alloziert, kann von
- * weiteren aufrufen ueberschrieben werden.
- */
-char *ctime(const time_t *time_ptr)
-{
- return ctime_string;
-}
Index: src/modules/lib/stdlibc/gmtime.c
===================================================================
--- src/modules/lib/stdlibc/gmtime.c (Revision 692)
+++ src/modules/lib/stdlibc/gmtime.c (Arbeitskopie)
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2007 The LOST Project. All rights reserved.
- *
- * This code is derived from software contributed to the LOST Project
- * by Antoine Kaufmann.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the LOST Project
- * and its contributors.
- * 4. Neither the name of the LOST Project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/types.h>
-#include <time.h>
-#include <string.h>
-
-struct tm tm;
-
-/**
- * Timestamp in tm-Struktur einfuellen
- *
- * @param time_ptr Pointer auf den Timestamp
- *
- * @return Pointer auf die interne statisch allozierte tm-Struktur. Diese kann
- * bei jedem Aufruf einer Zeitfunktion ueberschrieben werden!
- */
-struct tm* gmtime(const time_t* time_ptr)
-{
- // TODO
- memset(&tm, 0, sizeof(struct tm));
- return &tm;
-}