From owner-svn-src-all@FreeBSD.ORG Mon Jul 11 08:24:36 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DDFC9106568D; Mon, 11 Jul 2011 08:24:36 +0000 (UTC) (envelope-from edwin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id CE8E98FC16; Mon, 11 Jul 2011 08:24:36 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6B8Oakf082564; Mon, 11 Jul 2011 08:24:36 GMT (envelope-from edwin@svn.freebsd.org) Received: (from edwin@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6B8OaFj082562; Mon, 11 Jul 2011 08:24:36 GMT (envelope-from edwin@svn.freebsd.org) Message-Id: <201107110824.p6B8OaFj082562@svn.freebsd.org> From: Edwin Groothuis Date: Mon, 11 Jul 2011 08:24:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223928 - head/usr.bin/calendar X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 11 Jul 2011 08:24:37 -0000 Author: edwin Date: Mon Jul 11 08:24:36 2011 New Revision: 223928 URL: http://svn.freebsd.org/changeset/base/223928 Log: Fix the interpreter for: Jul/Sat+3 Every third saturday of July - Jul/Sat+3 which was able to be done via: Jul/SatThird Every third saturday of July - Jul/SatThird Add interpreters for: SatFourth Every third saturday of each month - SatFourth Sat+4 Every third saturday of each month - Sat+4 Sat Every saturday of each month - Sat MFC after: 2 weeks Modified: head/usr.bin/calendar/parsedata.c Modified: head/usr.bin/calendar/parsedata.c ============================================================================== --- head/usr.bin/calendar/parsedata.c Mon Jul 11 08:23:59 2011 (r223927) +++ head/usr.bin/calendar/parsedata.c Mon Jul 11 08:24:36 2011 (r223928) @@ -548,6 +548,24 @@ parsedaymonth(char *date, int *yearp, in continue; } + /* Every so-manied dayofweek of every month of the year */ + if (lflags == (F_DAYOFWEEK | F_MODIFIERINDEX | F_VARIABLE)) { + offset = indextooffset(modifierindex); + + for (m = 0; m < 12; m++) { + dow = first_dayofweek_of_month(year, m); + d = (idayofweek - dow + 8) % 7; + d += (offset - 1) * 7; + if (remember_ymd(year, m, d)) { + remember(&remindex, + yearp, monthp, dayp, edp, + year, m, d, NULL); + continue; + } + } + continue; + } + /* A certain dayofweek of a month */ if (lflags == (F_MONTH | F_DAYOFWEEK | F_MODIFIERINDEX | F_VARIABLE)) { @@ -918,6 +936,16 @@ indextooffset(char *s) int i; struct fixs *n; + if (s[0] == '+' || s[0] == '-') { + char ss[9]; + for (i = -100; i < 100; i++) { + sprintf(ss, "%s%d", (i > 0) ? "+" : "", i); + if (strcmp(ss, s) == 0) + return (i); + } + return (0); + } + for (i = 0; i < 6; i++) { if (strcasecmp(s, sequences[i]) == 0) { if (i == 5)