diff --git a/ChangeLog b/ChangeLog
index e171fe8e9..976d37555 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -7,6 +7,9 @@
------ old releases ------------------------------
+1.8.3 (10/21/2009) bcdcbeeea0d92f21c3565aebfaf6332b959f4025
+ + Added support for Haiku R1/alpha1
+
1.8.2 (9/7/2009) f243f0ed443ecd7dde779de8a6525222591024db
+ Added feature #282 that returns useful exit codes to the shell. Now a
script can detect whether no tasks were returned by a report (thanks to
diff --git a/NEWS b/NEWS
index 02f401fb1..6a358f0b1 100644
--- a/NEWS
+++ b/NEWS
@@ -26,6 +26,7 @@ Task has been built and tested on the following configurations:
- OpenBSD 4.5
- FreeBSD
- Cygwin 1.5
+ - Haiku R1/alpha1
While Task has undergone testing, bugs are sure to remain. If you encounter a
bug, please enter a new issue at:
diff --git a/package-config/osx/task.pmdoc/01task-contents.xml b/package-config/osx/task.pmdoc/01task-contents.xml
index 7b4f85219..a317238f4 100644
--- a/package-config/osx/task.pmdoc/01task-contents.xml
+++ b/package-config/osx/task.pmdoc/01task-contents.xml
@@ -1 +1 @@
-
\ No newline at end of file
+groupowner
\ No newline at end of file
diff --git a/package-config/osx/task.pmdoc/01task.xml b/package-config/osx/task.pmdoc/01task.xml
index 27576e7f1..f3c7d27b1 100644
--- a/package-config/osx/task.pmdoc/01task.xml
+++ b/package-config/osx/task.pmdoc/01task.xml
@@ -1 +1 @@
-com.beckingham.task180.task.pkg1.8.0/Users/paul/task.git/package-config/osx/binary/task/usr/local/binparentlocationTyperelocatableversioninstallTo.pathinstallTo01task-contents.xml/CVS$/\.svn$/\.cvsignore$/\.cvspass$/\.DS_Store$
\ No newline at end of file
+com.beckingham.task182.task.pkg1.8.2/Users/paul/task.git/package-config/osx/binary/task/usr/local/bininstallTolocationTyperelocatableidentifierparentversioninstallTo.path01task-contents.xml/CVS$/\.svn$/\.cvsignore$/\.cvspass$/\.DS_Store$
\ No newline at end of file
diff --git a/package-config/osx/task.pmdoc/index.xml b/package-config/osx/task.pmdoc/index.xml
index 35f24a7fa..1a4dbfbf2 100644
--- a/package-config/osx/task.pmdoc/index.xml
+++ b/package-config/osx/task.pmdoc/index.xml
@@ -1 +1 @@
-Task 1.8.0/Users/paul/Desktop/task-1.8.0.pkgcom.beckingham/Users/paul/task.git/package-config/osx/binary/COPYING.txt/Users/paul/task.git/package-config/osx/binary/README.txt- 01task.xml
properties.titleproperties.anywhereDomainproperties.systemDomain
\ No newline at end of file
+Task 1.8.2/Users/paul/Desktop/task-1.8.2.pkgcom.beckingham/Users/paul/task.git/package-config/osx/binary/COPYING.txt/Users/paul/task.git/package-config/osx/binary/README.txt- 01task.xml
properties.titleproperties.customizeOptionproperties.anywhereDomainproperties.systemDomain
\ No newline at end of file
diff --git a/src/Context.cpp b/src/Context.cpp
index 0af808204..bae490707 100644
--- a/src/Context.cpp
+++ b/src/Context.cpp
@@ -30,6 +30,7 @@
#include
#include
#include
+#include
#include "Context.h"
#include "Timer.h"
#include "text.h"
diff --git a/src/Date.cpp b/src/Date.cpp
index 1d7692ced..55abd8421 100644
--- a/src/Date.cpp
+++ b/src/Date.cpp
@@ -29,6 +29,7 @@
#include
#include
#include
+#include
#include "Date.h"
#include "text.h"
#include "util.h"
@@ -82,14 +83,14 @@ Date::Date (const std::string& mdy, const std::string& format /* = "m/d/Y" */)
// Single or double digit.
case 'm':
if (i >= mdy.length () ||
- ! ::isdigit (mdy[i]))
+ ! isdigit (mdy[i]))
{
throw std::string ("\"") + mdy + "\" is not a valid date.";
}
if (i + 1 < mdy.length () &&
(mdy[i + 0] == '0' || mdy[i + 0] == '1') &&
- ::isdigit (mdy[i + 1]))
+ isdigit (mdy[i + 1]))
{
month = ::atoi (mdy.substr (i, 2).c_str ());
i += 2;
@@ -103,14 +104,14 @@ Date::Date (const std::string& mdy, const std::string& format /* = "m/d/Y" */)
case 'd':
if (i >= mdy.length () ||
- ! ::isdigit (mdy[i]))
+ ! isdigit (mdy[i]))
{
throw std::string ("\"") + mdy + "\" is not a valid date.";
}
if (i + 1 < mdy.length () &&
(mdy[i + 0] == '0' || mdy[i + 0] == '1' || mdy[i + 0] == '2' || mdy[i + 0] == '3') &&
- ::isdigit (mdy[i + 1]))
+ isdigit (mdy[i + 1]))
{
day = ::atoi (mdy.substr (i, 2).c_str ());
i += 2;
@@ -125,8 +126,8 @@ Date::Date (const std::string& mdy, const std::string& format /* = "m/d/Y" */)
// Double digit.
case 'y':
if (i + 1 >= mdy.length () ||
- ! ::isdigit (mdy[i + 0]) ||
- ! ::isdigit (mdy[i + 1]))
+ ! isdigit (mdy[i + 0]) ||
+ ! isdigit (mdy[i + 1]))
{
throw std::string ("\"") + mdy + "\" is not a valid date.";
}
@@ -137,8 +138,8 @@ Date::Date (const std::string& mdy, const std::string& format /* = "m/d/Y" */)
case 'M':
if (i + 1 >= mdy.length () ||
- ! ::isdigit (mdy[i + 0]) ||
- ! ::isdigit (mdy[i + 1]))
+ ! isdigit (mdy[i + 0]) ||
+ ! isdigit (mdy[i + 1]))
{
throw std::string ("\"") + mdy + "\" is not a valid date.";
}
@@ -149,8 +150,8 @@ Date::Date (const std::string& mdy, const std::string& format /* = "m/d/Y" */)
case 'D':
if (i + 1 >= mdy.length () ||
- ! ::isdigit (mdy[i + 0]) ||
- ! ::isdigit (mdy[i + 1]))
+ ! isdigit (mdy[i + 0]) ||
+ ! isdigit (mdy[i + 1]))
{
throw std::string ("\"") + mdy + "\" is not a valid date.";
}
@@ -162,10 +163,10 @@ Date::Date (const std::string& mdy, const std::string& format /* = "m/d/Y" */)
// Quadruple digit.
case 'Y':
if (i + 3 >= mdy.length () ||
- ! ::isdigit (mdy[i + 0]) ||
- ! ::isdigit (mdy[i + 1]) ||
- ! ::isdigit (mdy[i + 2]) ||
- ! ::isdigit (mdy[i + 3]))
+ ! isdigit (mdy[i + 0]) ||
+ ! isdigit (mdy[i + 1]) ||
+ ! isdigit (mdy[i + 2]) ||
+ ! isdigit (mdy[i + 3]))
{
throw std::string ("\"") + mdy + "\" is not a valid date.";
}
diff --git a/src/Nibbler.cpp b/src/Nibbler.cpp
index 8941fb3c7..dce165412 100644
--- a/src/Nibbler.cpp
+++ b/src/Nibbler.cpp
@@ -243,7 +243,7 @@ bool Nibbler::getInt (int& result)
++i;
}
- while (i < mInput.length () && ::isdigit (mInput[i]))
+ while (i < mInput.length () && isdigit (mInput[i]))
++i;
if (i > mCursor)
@@ -260,7 +260,7 @@ bool Nibbler::getInt (int& result)
bool Nibbler::getUnsignedInt (int& result)
{
std::string::size_type i = mCursor;
- while (i < mInput.length () && ::isdigit (mInput[i]))
+ while (i < mInput.length () && isdigit (mInput[i]))
++i;
if (i > mCursor)
diff --git a/src/Sequence.cpp b/src/Sequence.cpp
index 44fc3f2ce..85702398b 100644
--- a/src/Sequence.cpp
+++ b/src/Sequence.cpp
@@ -153,7 +153,7 @@ bool Sequence::validId (const std::string& input) const
return false;
for (size_t i = 0; i < input.length (); ++i)
- if (!::isdigit (input[i]))
+ if (!isdigit (input[i]))
return false;
return true;
diff --git a/src/Table.cpp b/src/Table.cpp
index ff7c931e2..3f6dc331f 100644
--- a/src/Table.cpp
+++ b/src/Table.cpp
@@ -771,7 +771,7 @@ void Table::sort (std::vector & order)
if (gap > 1)
{
gap = (int) ((float)gap / 1.3);
- if (gap == 10 or gap == 9)
+ if (gap == 10 || gap == 9)
gap = 11;
}
diff --git a/src/Timer.cpp b/src/Timer.cpp
index 5d25dd4f4..cc9a76abe 100644
--- a/src/Timer.cpp
+++ b/src/Timer.cpp
@@ -52,7 +52,7 @@ Timer::~Timer ()
<< mDescription
<< " "
<< std::setprecision (6)
- << std::fixed
+// << std::fixed
<< ((end.tv_sec - mStart.tv_sec) + ((end.tv_usec - mStart.tv_usec )
/ 1000000.0))
<< " sec";
diff --git a/src/import.cpp b/src/import.cpp
index 939e04710..2ad65c948 100644
--- a/src/import.cpp
+++ b/src/import.cpp
@@ -106,16 +106,16 @@ static fileType determineFileType (const std::vector & lines)
{
if ( lines[i][0] == 'x' &&
lines[i][1] == ' ' &&
- ::isdigit (lines[i][2]) &&
- ::isdigit (lines[i][3]) &&
- ::isdigit (lines[i][4]) &&
- ::isdigit (lines[i][5]) &&
+ isdigit (lines[i][2]) &&
+ isdigit (lines[i][3]) &&
+ isdigit (lines[i][4]) &&
+ isdigit (lines[i][5]) &&
lines[i][6] == '-' &&
- ::isdigit (lines[i][7]) &&
- ::isdigit (lines[i][8]) &&
+ isdigit (lines[i][7]) &&
+ isdigit (lines[i][8]) &&
lines[i][9] == '-' &&
- ::isdigit (lines[i][10]) &&
- ::isdigit (lines[i][11]))
+ isdigit (lines[i][10]) &&
+ isdigit (lines[i][11]))
return todo_sh_2_0;
}
@@ -126,13 +126,13 @@ static fileType determineFileType (const std::vector & lines)
// +project
if (words[w].length () > 1 &&
words[w][0] == '+' &&
- ::isalnum (words[w][1]))
+ isalnum (words[w][1]))
return todo_sh_2_0;
// @context
if (words[w].length () > 1 &&
words[w][0] == '@' &&
- ::isalnum (words[w][1]))
+ isalnum (words[w][1]))
return todo_sh_2_0;
}
}
diff --git a/src/report.cpp b/src/report.cpp
index c32b6e046..83f7bd07b 100644
--- a/src/report.cpp
+++ b/src/report.cpp
@@ -1403,9 +1403,9 @@ std::string renderMonths (
row = 0;
// Loop through days in month and add to table.
- for (int d = 1; d <= daysInMonth.at (mpl); ++d)
+ for (int d = 1; d <= daysInMonth[mpl]; ++d)
{
- Date temp (months.at (mpl), d, years.at (mpl));
+ Date temp (months[mpl], d, years[mpl]);
int dow = temp.dayOfWeek ();
int woy = temp.weekOfYear (weekStart);
@@ -1423,7 +1423,7 @@ std::string renderMonths (
table.addCell (row, thisCol, d);
if ((context.config.get ("color", true) || context.config.get (std::string ("_forcecolor"), false)) &&
- today.day () == d &&
+ today.day () == d &&
today.month () == months.at (mpl) &&
today.year () == years.at (mpl))
table.setCellColor (row, thisCol, Color (Color::cyan));
@@ -1437,8 +1437,8 @@ std::string renderMonths (
if ((context.config.get ("color", true) || context.config.get (std::string ("_forcecolor"), false)) &&
due.day () == d &&
- due.month () == months.at (mpl) &&
- due.year () == years.at (mpl))
+ due.month () == months[mpl] &&
+ due.year () == years[mpl])
{
Color c (Color::black, (due < today ? Color::red : Color::yellow));
table.setCellColor (row, thisCol, c);
@@ -1450,7 +1450,7 @@ std::string renderMonths (
int eow = 6;
if (weekStart == 1)
eow = 0;
- if (dow == eow && d < daysInMonth.at (mpl))
+ if (dow == eow && d < daysInMonth[mpl])
row++;
}
}
diff --git a/src/tests/run_all b/src/tests/run_all
index da58a1de8..4d471513b 100755
--- a/src/tests/run_all
+++ b/src/tests/run_all
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /bin/sh
date > all.log
@@ -14,7 +14,7 @@ END=`tail -1 all.log`
OS=`uname`
case $OS in
- Darwin)
+ Darwin | FreeBSD)
STARTEPOCH=`date -j -f "%a %b %d %T %Z %Y" "${START}" "+%s"`
ENDEPOCH=`date -j -f "%a %b %d %T %Z %Y" "${END}" "+%s"`
;;
diff --git a/src/text.cpp b/src/text.cpp
index 0e511b551..d980b7c34 100644
--- a/src/text.cpp
+++ b/src/text.cpp
@@ -209,7 +209,7 @@ std::string commify (const std::string& data)
int i;
for (int i = 0; i < (int) data.length (); ++i)
{
- if (::isdigit (data[i]))
+ if (isdigit (data[i]))
end = i;
if (data[i] == '.')
@@ -227,11 +227,11 @@ std::string commify (const std::string& data)
int consecutiveDigits = 0;
for (; i >= 0; --i)
{
- if (::isdigit (data[i]))
+ if (isdigit (data[i]))
{
result += data[i];
- if (++consecutiveDigits == 3 && i && ::isdigit (data[i - 1]))
+ if (++consecutiveDigits == 3 && i && isdigit (data[i - 1]))
{
result += ',';
consecutiveDigits = 0;
@@ -251,11 +251,11 @@ std::string commify (const std::string& data)
int consecutiveDigits = 0;
for (; i >= 0; --i)
{
- if (::isdigit (data[i]))
+ if (isdigit (data[i]))
{
result += data[i];
- if (++consecutiveDigits == 3 && i && ::isdigit (data[i - 1]))
+ if (++consecutiveDigits == 3 && i && isdigit (data[i - 1]))
{
result += ',';
consecutiveDigits = 0;
@@ -279,8 +279,8 @@ std::string lowerCase (const std::string& input)
{
std::string output = input;
for (int i = 0; i < (int) input.length (); ++i)
- if (::isupper (input[i]))
- output[i] = ::tolower (input[i]);
+ if (isupper (input[i]))
+ output[i] = tolower (input[i]);
return output;
}
@@ -290,8 +290,8 @@ std::string upperCase (const std::string& input)
{
std::string output = input;
for (int i = 0; i < (int) input.length (); ++i)
- if (::islower (input[i]))
- output[i] = ::toupper (input[i]);
+ if (islower (input[i]))
+ output[i] = toupper (input[i]);
return output;
}
@@ -302,7 +302,7 @@ std::string ucFirst (const std::string& input)
std::string output = input;
if (output.length () > 0)
- output[0] = ::toupper (output[0]);
+ output[0] = toupper (output[0]);
return output;
}
@@ -352,7 +352,7 @@ void guess (
bool digitsOnly (const std::string& input)
{
for (size_t i = 0; i < input.length (); ++i)
- if (!::isdigit (input[i]))
+ if (!isdigit (input[i]))
return false;
return true;
@@ -362,7 +362,7 @@ bool digitsOnly (const std::string& input)
bool noSpaces (const std::string& input)
{
for (size_t i = 0; i < input.length (); ++i)
- if (::isspace (input[i]))
+ if (isspace (input[i]))
return false;
return true;
diff --git a/src/util.cpp b/src/util.cpp
index 76ebd1312..75938a318 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -64,7 +64,7 @@ bool confirm (const std::string& question)
<< " ";
std::getline (std::cin, answer);
- answer = lowerCase (trim (answer));
+ answer = std::cin.eof() ? "no" : lowerCase (trim (answer));
}
while (answer != "y" && // TODO i18n
answer != "ye" && // TODO i18n