avr-libc-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[avr-libc-commit] [2364] New file and function iso_weeknum.


From: Mike Rice
Subject: [avr-libc-commit] [2364] New file and function iso_weeknum.
Date: Sat, 27 Apr 2013 15:31:25 +0000

Revision: 2364
          http://svn.sv.gnu.org/viewvc/?view=rev&root=avr-libc&revision=2364
Author:   swfltek
Date:     2013-04-27 15:31:25 +0000 (Sat, 27 Apr 2013)
Log Message:
-----------
New file and function iso_weeknum. This was added to support strftime(), but 
may be useful in its own right.

Modified Paths:
--------------
    trunk/avr-libc/libc/time/Files.am

Added Paths:
-----------
    trunk/avr-libc/libc/time/iso_weeknum.c

Modified: trunk/avr-libc/libc/time/Files.am
===================================================================
--- trunk/avr-libc/libc/time/Files.am   2013-04-27 15:27:15 UTC (rev 2363)
+++ trunk/avr-libc/libc/time/Files.am   2013-04-27 15:31:25 UTC (rev 2364)
@@ -43,6 +43,7 @@
        gmtime_r.c \
        isLeap.c \
        isotime.c \
+       iso_weeknum.c \
        isotime_r.c \
        lm_sidereal.c \
        localtime.c \

Added: trunk/avr-libc/libc/time/iso_weeknum.c
===================================================================
--- trunk/avr-libc/libc/time/iso_weeknum.c                              (rev 0)
+++ trunk/avr-libc/libc/time/iso_weeknum.c      2013-04-27 15:31:25 UTC (rev 
2364)
@@ -0,0 +1,54 @@
+/*
+ * (c)2012 Michael Duane Rice All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer. 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. Neither the name of the copyright holders
+ * nor the names of 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 OWNER 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.
+ */
+
+/* $Id$ */
+
+/* Compute the ISO 8601 week number of the year. */
+
+#include <time.h>
+
+uint8_t
+iso_weeknum(const struct tm * timestruct)
+{
+       int             d, w;
+
+       d = timestruct->tm_wday;
+       if (d == 0)
+               d = 7;
+       w = timestruct->tm_yday + 11 - d;
+       w /= 7;
+       if (w == 53) {
+               /* week 53 must include its thursday in the same year */
+               d = timestruct->tm_mday - 1;
+               d -= timestruct->tm_wday;
+               d += THURSDAY;
+               if (d > 30)
+                       w++;    /* signal first week of the following year */
+       }
+       return w;
+}


Property changes on: trunk/avr-libc/libc/time/iso_weeknum.c
___________________________________________________________________
Added: svn:keywords
   + ID




reply via email to

[Prev in Thread] Current Thread [Next in Thread]