Commit Graph

333 Commits

Author SHA1 Message Date
Jérôme Duval
6ac3a280f4 Add ZstdCompressionAlgorithm.
* kernel lib is decompress only (like zlib).
* expand compression_test for zstd.
2017-11-24 21:35:49 +01:00
John Scipione
cc04d41c87 BString: Use safestr() to prevent strlen(NULL)
on StartsWith(), IStartsWith(), EndsWith(), and IEndsWith()
2017-02-21 19:20:02 -08:00
John Scipione
388ac82baa BString: Add IStartsWith() and IEndsWith() methods
Case-insensitive version of StartsWith() and EndsWith()
2017-02-21 18:03:03 -08:00
Andrew Lindesay
7407e36a10 HaikuDepot; date formatting and location header handling
The existing HTTP header date format handling code is employed
rather than using specific logic for HD.  Also the "Location"
header handling is changed to work better for non-absolute
URLs arriving in this header value on a redirect.  Both
suggestions from Adrien.
2017-01-31 23:06:20 +13:00
Adrien Destugues
bdd02e0d9d BString: rename SetCharAt to SetByteAt
Makes it clear that it operates on bytes, not unicode codepoints.
Thanks to mmlr for remembering me of this subtlety.
2017-01-12 22:03:51 +01:00
Jérôme Duval
0c5219a1d6 Restore missing symbol _ZN7BStringixEi on x86 and x86_64.
* Vision and others were broken after 3eac8208df.
* this adds BStringRef in the backward compatibility section.
* fixes #13199.
2017-01-12 21:23:50 +01:00
Adrien Destugues
3eac8208df Remove BStringRef and users.
As discussed in 2008
(http://www.freelists.org/post/haiku-development/BString-on-GCC4,1),
this class was not efficient because of lack of inlining. Implement the
suggested solution of a SetCharAt method instead. Also add a CompareAt
which covers a specific use case in KeyboardLayout.cpp.

Adjust all places which were using this feature to safer APIs.

Also fixes a copypaste error in FormattingConventions.cpp.
2017-01-11 20:50:41 +01:00
Adrien Destugues
2c26ad4b39 move BUrl to the support kit
It is used by the media kit, which created a dependency from libmedia to
libbnetapi to openssl.
It is not entirely specific to the network kit, there are some use cases
that don't involve network at all.
2016-12-29 16:38:53 +01:00
Dario Casalinuovo
8c7679851f Move MediaIO in it's own header 2016-03-25 22:44:56 +01:00
Dario Casalinuovo
7b79e0694e Add prototype BMediaIO interface 2016-03-25 21:54:24 +01:00
Michael Lotz
44f5830503 BLocker: Make misuse warning more useful.
Also print the locker sem (for manual name lookup) and the involved
threads. It was also missing the line terminator which messed up the
following output.

Also fix a typo in a comment.
2015-11-04 00:11:17 +01:00
Michael Lotz
1cffe0dc51 BLocker: Fix recursive count for "unusual" use cases.
Since a BLocker can be unlocked from other threads than the one holding
the lock, it can also be further unlocked even when already unlocked.
This caused the recursive count to become negative. The first lock then
needs to reinitialize the count to 1 for the lock balance to work again.

Just incrementing the negative recursive count lead to it never
counting back down from one to zero in the unlock case, which made the
BLocker impossible to unlock.

This makes the Haiku BLocker behave exactly like the BeOS one, including
the negative recursive count and reinitialization, as evidenced by its
debugging features showing the internal counts.

Alternatively to reinitializing the recursive count it could be
prevented from going below zero in the first place, but I don't see why
we should deviate from BeOS there while allowing its awkward unlock
behaviour.

This makes some more exotic use cases work like the BGLView <-> SDL
combination that previously would always just hang. While these abuses
should be reviewed/corrected, just hanging the BLocker doesn't seem
useful.
2015-11-04 00:11:16 +01:00
Axel Dörfler
c80084b025 JobQueue: fixed incorrect requeuing.
* A dependent job was requeued even if it wasn't part of the queue
  before. The code relied on dependent jobs being already enqueued;
  but that cannot be guaranteed.
* If a job failed, its dependent jobs are now also set to failed, so
  that they won't be requeued at a later point.
* This caused some of the "Launching xxx failed: Operation not allowed"
  messages in the boot process. Those actually weren't harmless, and
  could mess up the natural job order.
2015-10-18 13:11:26 +02:00
Axel Dörfler
5ab2b1457b BJob: Added SetState() method. 2015-10-17 14:16:26 +02:00
Axel Dörfler
19d8cb703c BDate: added time_t constructor.
* This class is pretty much useless as it is.
2015-09-04 17:33:07 +02:00
Adrien Destugues
2f8639483a PVS 170: use boolean for if comparison
Direct use of strcmp result in if is against our coding style.
2015-07-26 16:57:05 +02:00
Axel Dörfler
c7c1744b2e JobQueue::AddJob() returns error on lock failure.
* If the lock could not be obtained, it will now return B_ERROR
  instead of B_OK.
2015-07-22 20:41:41 +02:00
Axel Dörfler
6ff95509c2 JobQueue: fixed leak, notification, added Pop() variant.
* Was leaking fQueuedJobs on destruction.
* fHaveRunnableJobSem implementation was not completed; it was never
  released.
* Added Pop() variant that is a bit more flexible, and allows for a
  timeout as well as waiting even when the queue is empty, and can
  return a status code.
2015-06-03 16:22:44 +02:00
Axel Dörfler
e711e6e42f Moved BJob, and JobQueue into the support kit.
* Put it in the BSupportKit namespace, following the style introduced
  with the package kit for now.
* The BSupportKit::BJob class no longer knows about the package kit's
  Context class. However, the BPackageKit::BJob class does.
* Due to the namespace juggling, a lot of files had to be touched.
* The JobQueue class remains private.
* Due to the way Haiku is built on itself, you cannot build this change
  under Haiku with an older release.
2015-05-21 21:37:01 +02:00
Adrien Destugues
7c52cca938 Build fix.
Thanks to luroh for noticing.
2015-04-28 21:00:40 +02:00
Adrien Destugues
5de22b9bf6 BLocker: make "unlock from wrong thread" only a warning.
Calling Debugger here causes issues with some software (mainly Mesa).
Only print a warning, this is enough for developers to see the problem,
and not as annoying for users.
2015-04-28 20:33:45 +02:00
Michael Lotz
e01de52283 More whitespace cleanup all over the place. 2015-04-10 15:05:14 +02:00
Axel Dörfler
a6b84a0c57 BBufferedDataIO: the underlying stream might return an error.
* In this case, fSize would have been set incorrectly, ignoring the error
  completely, but open the possibility to read from uninitialized or even
  unmapped memory.
2015-01-06 15:25:37 +01:00
Adrien Destugues
d350b0f0d4 Typo. 2014-12-22 15:14:13 +01:00
Adrien Destugues
4227495829 BLocker: call debugger() when unlocking from another thread
BeOS did allow other threads than the owner to unlock a BLocker (the be
book says so). We did not, and silently ignored the unlock attempt in
this case, probably resulting in a deadlock of applications using the
feature.

Call debugger instead so:
* The problem is made visible for such apps
* The debugger call is continuable so the app can be run, still

Will help making a decision on what to do here (follow BeOS or change
behavior) and make a final decision for #6400.
2014-12-22 11:26:23 +01:00
Michael Lotz
3fe7b3f72c BString: Add ScanWithFormat convenience method. 2014-11-02 11:38:45 +01:00
Adrien Destugues
afd5ec11d2 Add setters to BDate and BCalendarView
* BDate setters don't perform any validation, use with caution.
* BCalendarView setters do perform validation checks, and will adjust
the day so it fits the requested month or year.
* Add tests for the BCalendarView setters.
2014-09-30 15:38:24 +02:00
Adrien Destugues
f188c1defa BDateFormat: improve API
* Use a reference rather than a pointer for the output string, removing
the need for NULL checks (which were missing, anyway)
* Adjust callers to that change
* Add new Format variant taking a BDate argument
2014-09-30 09:47:02 +02:00
Jérôme Duval
3aeed6607c include strings.h where appriopriate...
instead or additionally to string.h, in preparation for functions move.
* moves str[n]casecmp() functions and others to strings.h.
* strings.h doesn't include string.h anymore.
* this solves #10949
2014-08-08 22:40:37 +02:00
Ingo Weinhold
05b565f4f2 Add private BDataPositionIOWrapper
Implements the BPositionIO interface on top of a BDataIO, requiring the
{Read,Write}At() accesses to be sequential.
2014-07-13 17:57:56 +02:00
Ingo Weinhold
8546c4160e BPositionIO: Add {Read,Write}AtExactly()
Analoguous to {Read,Write}Exactly(), just for the *At() versions.
2014-07-12 15:40:21 +02:00
Ingo Weinhold
c666db88ef BZlibCompressionAlgorithm: Missing NULL check 2014-07-03 17:39:59 +02:00
Ingo Weinhold
a5330a8e41 Remove private support kit BUrl
Use the public BUrl from the network kit instead.
2014-07-03 17:39:59 +02:00
Ingo Weinhold
72cf56a0fd BZlibCompressionAlgorithm: Basic support for gzip format 2014-07-01 21:54:58 +02:00
Ingo Weinhold
b3263ad3e1 Switch package kit to BZlibCompressionAlgorithm
... and remove the Zlib{Compressor,Decompressor} API.
2014-06-30 21:55:41 +02:00
Ingo Weinhold
dcdc33b0af Add B[Zlib]CompressionAlgorithm
* BCompressionAlgorithm is a base class for classes that provide
  compression/decompression functionality. There are methods for
  compressing/decompressing a single buffer and factory methods for
  a compressing/decompressing input/output BDataIO.
* BZlibCompressionAlgorithm is a BCompressionAlgorithm implementation
  using zlib.
2014-06-30 21:55:41 +02:00
Ingo Weinhold
6a89a36aa0 Move package kit Zlib* classes to support kit
Also move to B* namespace and no longer expose the zlib dependency in
the headers.
2014-06-30 21:55:41 +02:00
Ingo Weinhold
b773d89eba BDataIO: Add Flush() 2014-06-30 21:55:40 +02:00
John Scipione
29e8fa5922 Style fixes to Support Kit files 2014-06-24 19:30:54 -04:00
Ingo Weinhold
5ede33ed15 BDataIO: Hopefully fix native build 2014-06-23 23:18:00 +02:00
Ingo Weinhold
0d8b44e25b BDataIO: Add methods {Read,Write}Exactly() 2014-06-23 22:58:15 +02:00
Ingo Weinhold
98759fe6e6 BDataIO: Provide default implementations for Read()/Write()
This makes the interface somewhat more suitable for unidirectional use,
since one doesn't have to implement the other, not needed method.
2014-06-23 22:58:14 +02:00
Adrien Destugues
dbd4f8c46b SetTime_t: Use the sign-fixed modulo we computed
* In C++03 and earlier, the sign of the modulo result is implementation
defined (this was fixed in C++11).
* Setting a negative time is not what we want here, so make sure we use
the proper value.
2014-06-16 08:46:56 +02:00
Jessica Hamilton
a0b864f0e4 BString: fix possible infinite loop in _DoReplace 2014-06-08 04:37:16 +12:00
Adrien Destugues
64c12b418f Reintroduce BeOS compatible en/decode_base64.
Fixes #8579.
2014-02-21 22:30:18 +01:00
Pawel Dziepak
d0f2d8282f Merge branch 'scheduler'
Conflicts:
	build/jam/packages/Haiku
	headers/os/kernel/OS.h
	headers/os/opengl/GLRenderer.h
	headers/private/shared/cpu_type.h
	src/add-ons/kernel/drivers/power/acpi_battery/acpi_battery.h
	src/bin/sysinfo.cpp
	src/bin/top.c
	src/system/kernel/arch/x86/arch_system_info.cpp
	src/system/kernel/port.cpp
2014-01-17 04:06:15 +01:00
Jonathan Schleifer
f4c2f7ebdb Remove variable length arrays of non-PODs.
Variable length arrays of non-PODs are not part of the C++ standard, but
a GNU extension that never worked correctly. Instead, BStackOrHeap array
is used now, which makes sure that it's not too big for the stack, calls
all constructors and is valid C++.
2014-01-10 22:31:50 +01:00
Adrien Destugues
ab3fd9c828 Move {en,de}code_base64 to the support kit
It's not possible to use these from the network kit otherwise, as it
would create a circular dependency (mail > bnetapi > mail).

Is there a better way to solve this problem?
2013-12-04 13:51:31 +01:00
Ingo Weinhold
c39c9283aa Add get_architectures() and C++ versions
* get_architectures() returns the primary and the secondary
  architectures in one array. That turned out to be convenient.
* Add C++ versions for get[_secondary]_architectures(), returning a
  BStringList.
2013-11-17 02:09:37 +01:00
Pawel Dziepak
077c84eb27 kernel: atomic_*() functions rework
* No need for the atomically changed variables to be declared as
   volatile.
 * Drop support for atomically getting and setting unaligned data.
 * Introduce atomic_get_and_set[64]() which works the same as
   atomic_set[64]() used to. atomic_set[64]() does not return the
   previous value anymore.
2013-11-05 22:32:59 +01:00