summaryrefslogtreecommitdiff
path: root/misc/astrolog/files/patch-astrolog.c
diff options
context:
space:
mode:
authorAdam Weinberger <adamw@FreeBSD.org>2014-07-29 01:16:45 +0000
committerAdam Weinberger <adamw@FreeBSD.org>2014-07-29 01:16:45 +0000
commit0d36ec3c7937d274f501258ddf1798b05e4f33c2 (patch)
treeb35c705d3b36af5129c9a15430528661add3b428 /misc/astrolog/files/patch-astrolog.c
parentStage net-mgmt/routers2-extras and cleanup (diff)
Rename misc/ patch-xy patches to reflect the files they modify.
Notes
Notes: svn path=/head/; revision=363282
Diffstat (limited to 'misc/astrolog/files/patch-astrolog.c')
-rw-r--r--misc/astrolog/files/patch-astrolog.c94
1 files changed, 94 insertions, 0 deletions
diff --git a/misc/astrolog/files/patch-astrolog.c b/misc/astrolog/files/patch-astrolog.c
new file mode 100644
index 000000000000..d0fec280a4c3
--- /dev/null
+++ b/misc/astrolog/files/patch-astrolog.c
@@ -0,0 +1,94 @@
+diff --git astrolog.c astrolog.c
+index 5a26c68..8294d3e 100644
+--- astrolog.c
++++ astrolog.c
+@@ -38,6 +38,7 @@
+ ** Modifications from version 5.40 to 5.41 are by Alois Treindl.
+ */
+
++#include <ctype.h>
+ #include "astrolog.h"
+
+
+@@ -255,7 +256,7 @@ byte **argv;
+ byte *pch = szLine;
+
+ /* Split the entered line up into its individual switch strings. */
+- while (*pch >= ' ' || *pch == chTab) {
++ while (!iscntrl((_char)*pch) || *pch == chTab) {
+ if (*pch == ' ' || *pch == chTab) {
+ if (fSpace)
+ /* Skip over the current run of spaces between strings. */
+@@ -1470,8 +1471,18 @@ byte **argv;
+ case 'z':
+ if (ch1 == '0') {
+ if (argc <= 1 || RParseSz(argv[1], pmZon) == rLarge) {
+- i = us.dstDef != 0.0;
+- SwitchF(i);
++ if (argc > 1 && strcasecmp(argv[1], "current") == 0) {
++ time_t t;
++ struct tm *tm;
++
++ (void) time(&t);
++ tm = localtime(&t);
++ i = tm->tm_isdst != 0;
++ argc--; argv++;
++ } else {
++ i = us.dstDef != 0.0;
++ SwitchF(i);
++ }
+ SS = us.dstDef = i ? 1.0 : 0.0;
+ } else {
+ SS = us.dstDef = RParseSz(argv[1], pmZon);
+@@ -1556,13 +1567,39 @@ byte **argv;
+ return fFalse;
+ }
+ ciCore.nam = SzPersist(argv[1]);
++ if (CchSz(ciCore.nam) > 29) /* see charts1.c */
++ ciCore.nam[29] = chNull;
++ for (pch = ciCore.nam; *pch; pch++) {
++ if (*pch == '"') /* see io.c */
++ *pch = '\'';
++ else if (iscntrl((_char)*pch)) /* see xgeneral.c */
++ *pch = ' ';
++ }
+ ciCore.loc = SzPersist(argv[2]);
++ if (CchSz(ciCore.loc) > 29) /* see charts1.c */
++ ciCore.loc[29] = chNull;
++ for (pch = ciCore.loc; *pch; pch++) {
++ if (*pch == '"') /* see io.c */
++ *pch = '\'';
++ else if (iscntrl((_char)*pch)) /* see xgeneral.c */
++ *pch = ' ';
++ }
+ argc -= 2; argv += 2;
+ break;
+ }
+- if (argc <= 1 || RParseSz(argv[1], pmZon) == rLarge)
+- ZZ -= 1.0;
+- else {
++ if (argc <= 1 || RParseSz(argv[1], pmZon) == rLarge) {
++ if (argc > 1 && strcasecmp(argv[1], "current") == 0) {
++ time_t t;
++ struct tm *tm;
++
++ (void) time(&t);
++ tm = localtime(&t);
++ ZZ = us.zonDef = (tm->tm_isdst ? 1 : 0) -
++ (real)tm->tm_gmtoff/(60*60);
++ argc--; argv++;
++ } else
++ ZZ -= 1.0;
++ } else {
+ ZZ = us.zonDef = RParseSz(argv[1], pmZon);
+ if (!FValidZon(us.zonDef)) {
+ ErrorValR("z", us.zonDef);
+@@ -2213,7 +2250,7 @@ byte **argv;
+ #ifdef SWITCHES
+ void main(argc, argv)
+ int argc;
+-byte **argv;
++char **argv;
+ {
+ #else
+ void main()