diff --git a/src/add-ons/kernel/file_systems/udf/UdfStructures.cpp b/src/add-ons/kernel/file_systems/udf/UdfStructures.cpp index beadce6866..bd4b22432e 100644 --- a/src/add-ons/kernel/file_systems/udf/UdfStructures.cpp +++ b/src/add-ons/kernel/file_systems/udf/UdfStructures.cpp @@ -44,6 +44,7 @@ const entity_id Udf::kMetadataPartitionMapId(0, "*UDF Metadata Partition"); const entity_id Udf::kSparablePartitionMapId(0, "*UDF Sparable Partition"); const entity_id Udf::kVirtualPartitionMapId(0, "*UDF Virtual Partition"); const entity_id Udf::kImplementationId(0, "*OpenBeOS UDF", implementation_id_suffix(OS_BEOS, BEOS_OPENBEOS)); +const entity_id Udf::kPartitionContentsId(0, "+NSR03"); //! crc 010041 table, as generated by crc_table.cpp const uint16 Udf::kCrcTable[256] = { @@ -192,6 +193,7 @@ charspec::set_character_set_info(const char *info) // timestamp //---------------------------------------------------------------------- +#if !USER static int get_month_length(int month, int year) @@ -208,9 +210,29 @@ get_month_length(int month, int year) return 0; } } +#endif timestamp::timestamp(time_t time) { +#if USER + // Is it me, or is localtime() broken? + tm *local = localtime(&time); + if (local) { + set_microsecond(0); + set_hundred_microsecond(0); + set_centisecond(0); + set_second(local->tm_sec); + set_minute(local->tm_min); + set_hour(local->tm_hour); + set_day(local->tm_mday); + set_month(local->tm_mon+1); + set_year(local->tm_year+1900); + set_type(1); + set_timezone(local->tm_gmtoff / 60); + } else { + _clear(); + } +#else // no localtime() in the R5 kernel... // real_time_clock() is returning the time offset by -16 hours. // Considering I'm -8 hours from GMT, this doesn't really make // sense. For the moment I'm offsetting it manually here, but @@ -250,26 +272,7 @@ timestamp::timestamp(time_t time) set_year(year+1970); set_type(1); set_timezone(-2047); // -2047 == no timezone specified - -/* - // Is it me, or is localtime() broken? - tm *local = localtime(&time); - if (local) { - set_microsecond(0); - set_hundred_microsecond(0); - set_centisecond(0); - set_second(local->tm_sec); - set_minute(local->tm_min); - set_hour(local->tm_hour); - set_day(local->tm_mday); - set_month(local->tm_mon); - set_year(local->tm_year); - set_type(1); - set_timezone(local->tm_gmtoff); - } else { - _clear(); - } -*/ +#endif } void diff --git a/src/add-ons/kernel/file_systems/udf/UdfStructures.h b/src/add-ons/kernel/file_systems/udf/UdfStructures.h index b582489b2d..327b2001a7 100644 --- a/src/add-ons/kernel/file_systems/udf/UdfStructures.h +++ b/src/add-ons/kernel/file_systems/udf/UdfStructures.h @@ -128,10 +128,10 @@ public: t.bits.type = type; set_type_and_timezone(t.type_and_timezone); } - void set_timezone(int16 timezone) { + void set_timezone(int16 tz) { type_and_timezone_accessor t; t.type_and_timezone = type_and_timezone(); - t.bits.timezone = timezone; + t.bits.timezone = tz; set_type_and_timezone(t.type_and_timezone); } void set_year(uint16 year) { _year = B_HOST_TO_LENDIAN_INT16(year); } @@ -242,6 +242,7 @@ extern const entity_id kMetadataPartitionMapId; extern const entity_id kSparablePartitionMapId; extern const entity_id kVirtualPartitionMapId; extern const entity_id kImplementationId; +extern const entity_id kPartitionContentsId; //---------------------------------------------------------------------- // ECMA-167 Part 2 @@ -855,6 +856,9 @@ public: const array& implementation_use() const { return _implementation_use; } array& implementation_use() { return _implementation_use; } + const array& reserved() const { return _reserved; } + array& reserved() { return _reserved; } + // Set functions void set_vds_number(uint32 number) { _vds_number = B_HOST_TO_LENDIAN_INT32(number); } void set_partition_flags(uint16 flags) { _partition_flags = B_HOST_TO_LENDIAN_INT16(flags); } @@ -864,7 +868,7 @@ public: f.bits.allocated = allocated; set_partition_flags(f.partition_flags); } - + void set_partition_number(uint16 number) { _partition_number = B_HOST_TO_LENDIAN_INT16(number); } void set_access_type(uint32 type) { _access_type = B_HOST_TO_LENDIAN_INT32(type); } void set_start(uint32 start) { _start = B_HOST_TO_LENDIAN_INT32(start); } void set_length(uint32 length) { _length = B_HOST_TO_LENDIAN_INT32(length); } @@ -893,16 +897,16 @@ private: uint32 _length; entity_id _implementation_id; array _implementation_use; - uint8 _reserved[156]; + array _reserved; } __attribute__((packed)); enum partition_access_type { - PAT_UNSPECIFIED, - PAT_READ_ONLY, - PAT_WRITE_ONCE, - PAT_REWRITABLE, - PAT_OVERWRITABLE, + ACCESS_UNSPECIFIED, + ACCESS_READ_ONLY, + ACCESS_WRITE_ONCE, + ACCESS_REWRITABLE, + ACCESS_OVERWRITABLE, };