summaryrefslogtreecommitdiff
path: root/src/util.c
Commit message (Collapse)AuthorAgeFilesLines
* Modules: first preview 31 March 2016.antirez2016-05-101-1/+1
|
* Fix HINCRBYFLOAT to work with long doubles.antirez2015-11-041-3/+3
| | | | | | | | | | | | | | | | | During the refactoring needed for lazy free, specifically the conversion of t_hash from struct robj to plain SDS strings, HINCRBFLOAT was accidentally moved away from long doubles to doubles for internal processing of increments and formatting. The diminished precision created more obvious artifacts in the way small numbers are formatted once we convert from decimal number in radix 10 to double and back to its string in radix 10. By using more precision, we now have less surprising results at least with small numbers like "1.23", exactly like in the previous versions of Redis. See issue #2846.
* Lazyfree: Hash converted to use plain SDS WIP 5.antirez2015-10-011-3/+3
|
* Lazyfree: Hash converted to use plain SDS WIP 4.antirez2015-10-011-4/+8
|
* Lazyfree: Hash converted to use plain SDS WIP 2.antirez2015-10-011-1/+51
|
* Lazyfree: Hash converted to use plain SDS WIP 1.antirez2015-10-011-1/+34
|
* Utils: Include stdint.h and fix signess in sdigits10().antirez2015-02-271-1/+1
|
* Utils: added function to get radix 10 string length of signed integer.antirez2015-02-271-0/+12
|
* Better memtoll() error checking.antirez2015-02-121-5/+18
| | | | Related to PR #2357.
* The seed must be static in getRandomHexChars().antirez2015-01-221-1/+1
|
* counter must be static in getRandomHexChars().antirez2015-01-221-2/+4
|
* getRandomHexChars(): use /dev/urandom just to seed.antirez2015-01-211-8/+38
| | | | | | | | | On Darwin /dev/urandom depletes terribly fast. This is not an issue normally, but with Redis Cluster we generate a lot of unique IDs, for example during nodes handshakes. Our IDs need just to be unique without other strong crypto requirements, so this commit turns the function into something that gets a 20 bytes seed from /dev/urandom, and produces the rest of the output just using SHA1 in counter mode.
* Add simple ll2string() testsMatt Stancliff2014-12-231-0/+42
|
* Allow all code tests to run using Redis argsMatt Stancliff2014-12-231-4/+8
| | | | | | | | | | | | | | | | | | | | | Previously, many files had individual main() functions for testing, but each required being compiled with their own testing flags. That gets difficult when you have 8 different flags you need to set just to run all tests (plus, some test files required other files to be compiled aaginst them, and it seems some didn't build at all without including the rest of Redis). Now all individual test main() funcions are renamed to a test function for the file itself and one global REDIS_TEST define enables testing across the entire codebase. Tests can now be run with: - `./redis-server test <test>` e.g. ./redis-server test ziplist If REDIS_TEST is not defined, then no tests get included and no tests are included in the final redis-server binary.
* Clean up text throughout projectMatt Stancliff2014-09-291-1/+1
| | | | | | | | | | - Remove trailing newlines from redis.conf - Fix comment misspelling - Clarifies zipEncodeLength usage and a C API mention (#1243, #1242) - Fix cluster typos (inspired by @papanikge #1507) - Fix rewite -> rewrite in a few places (inspired by #682) Closes #1243, #1242, #1507
* Fix undefined behavior in ll2string().antirez2014-08-151-1/+5
| | | | | The bug was found by @CAFxX, thanks! See issue #1940.
* Fix util.c compilation by including stdint.h.antirez2014-07-231-0/+1
|
* Faster ll2string() implementation.antirez2014-07-231-21/+80
| | | | | | | | | | | | | | | | Based on ideas documented in this blog post: https://www.facebook.com/notes/facebook-engineering/three-optimization-tips-for-c/10151361643253920 The original code was modified to handle signed integers, reformetted to fit inside the Redis code base, and was stress-tested with a program in order to validate the implementation against snprintf(). Redis was measured to be measurably faster from the point of view of clients in real-world operations because of this change, since sometimes number to string conversion is used extensively (for example every time a GET results into an integer encoded object to be returned to the user).
* fix null pointer access with no file pointerGlauber Costa2014-04-231-1/+1
| | | | | | I happen to be working on a system that lacks urandom. While the code does try to handle this case and artificially create some bytes if the file pointer is empty, it does try to close it unconditionally, leading to a segfault.
* Ignore sdsrange return value.antirez2013-07-241-2/+2
|
* pathIsBaseName() added to utils.cantirez2013-07-021-0/+8
| | | | | The function is used to test that the specified string looks like just as the basename of a path, without any absolute or relative path.
* getAbsolutePath() moved into utils.cantirez2013-07-021-0/+52
|
* BSD license added to every C source and header file.antirez2012-11-081-0/+29
|
* Use correct variable name for value to convert.Michael Parker2012-07-311-1/+2
| | | | | | | | | Note by @antirez: this code was never compiled because utils.c lacked the float.h include, so we never noticed this variable was mispelled in the past. This should provide a noticeable speed boost when saving certain types of databases with many sorted sets inside.
* Merge conflicts resolved.antirez2012-03-091-3/+3
|\
| * string2* functions take a const pointerPieter Noordhuis2012-01-021-3/+3
| |
* | clusterGetRandomName() generalized into getRandomHexChars() so that we can ↵antirez2012-03-081-0/+48
|/ | | | use it for the run_id field as well.
* fmacros in utils.c to avoid warning about strcasecmp()antirez2011-05-161-0/+2
|
* Extra tests for string2llPieter Noordhuis2011-05-051-0/+8
|
* Tests for string2ll; move isObject* to object.cPieter Noordhuis2011-05-051-37/+126
|
* Fixed a problem with string2ll()antirez2011-05-011-1/+4
|
* Add new string to long long functionPieter Noordhuis2011-03-101-0/+57
|
* Fast conversion of double when representable as long longPieter Noordhuis2011-03-081-0/+40
|
* test for intset integer encodability test and some small refactoringantirez2010-08-261-7/+27
|
* redis.c split into many different C files.antirez2010-07-011-0/+223
networking related stuff moved into networking.c moved more code more work on layout of source code SDS instantaneuos memory saving. By Pieter and Salvatore at VMware ;) cleanly compiling again after the first split, now splitting it in more C files moving more things around... work in progress split replication code splitting more Sets split Hash split replication split even more splitting more splitting minor change