From 78c9dabd9e6a969385b9c1346c4918027b63d1cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Fri, 13 Mar 2015 13:44:57 +0100 Subject: [PATCH] addattr: added support for B_TIME_TYPE. * Using parsedate(). --- src/bin/addattr/addAttr.cpp | 10 ++++++++++ src/bin/addattr/main.cpp | 9 +++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/bin/addattr/addAttr.cpp b/src/bin/addattr/addAttr.cpp index 5dd1eaa168..94b620d2d0 100644 --- a/src/bin/addattr/addAttr.cpp +++ b/src/bin/addattr/addAttr.cpp @@ -12,6 +12,7 @@ #include #include +#include #include #include @@ -112,6 +113,15 @@ writeAttr(int fd, type_code type, const char* name, const char* value, size_t le return writeAttrValue(fd, name, B_BOOL_TYPE, boolValue); } + case B_TIME_TYPE: + { + time_t timeValue = parsedate(value, time(NULL)); + if (timeValue < 0) + return B_BAD_VALUE; + + return writeAttrValue(fd, name, B_TIME_TYPE, timeValue); + } + case B_STRING_TYPE: case B_MIME_STRING_TYPE: default: diff --git a/src/bin/addattr/main.cpp b/src/bin/addattr/main.cpp index 3d77e5072d..d1994ac9bc 100644 --- a/src/bin/addattr/main.cpp +++ b/src/bin/addattr/main.cpp @@ -64,8 +64,9 @@ const struct { {B_BOOL_TYPE, "bool"}, - {B_VECTOR_ICON_TYPE, "icon"}, + {B_TIME_TYPE, "time"}, + {B_VECTOR_ICON_TYPE, "icon"}, {B_RAW_TYPE, "raw"}, }; const uint32 kNumSupportedTypes = sizeof(kSupportedTypes) @@ -112,7 +113,7 @@ usage(int returnValue) " or: %s [-f value-from-file] [-t type] [ -P ] attr file1 [file2...]\n\n" "\t-P : Don't resolve links\n" "\tType is one of:\n" - "\t\tstring, mime, int, llong, float, double, bool, icon, raw\n" + "\t\tstring, mime, int, llong, float, double, bool, time, icon, raw\n" "\t\tor a numeric value (ie. 0x1234, 42, 'ABCD', ...)\n" "\tThe default is \"string\"\n", kProgramName, kProgramName); @@ -121,12 +122,12 @@ usage(int returnValue) void -invalidAttrType(const char *attrTypeName) +invalidAttrType(const char* attrTypeName) { fprintf(stderr, "%s: attribute type \"%s\" is not valid\n", kProgramName, attrTypeName); fprintf(stderr, "\tTry one of: string, mime, int, llong, float, double,\n"); - fprintf(stderr, "\t\tbool, icon, raw, or a numeric value (ie. 0x1234, 42, 'ABCD'" + fprintf(stderr, "\t\tbool, time, icon, raw, or a numeric value (ie. 0x1234, 42, 'ABCD'" ", ...)\n"); exit(1);