Changes in / [4805495:d5a89a3] in mainline


Ignore:
Location:
uspace
Files:
8 added
1 deleted
11 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/df/df.c

    r4805495 rd5a89a3  
    7070
    7171        /* Parse command-line options */
    72         while ((optres = getopt(argc, argv, ":ubh")) != -1) {
     72        while ((optres = getopt(argc, argv, "ubh")) != -1) {
    7373                switch (optres) {
    7474                case 'h':
     
    7878                case 'b':
    7979                        display_blocks = true;
    80                         break;
    81 
    82                 case ':':
    83                         fprintf(stderr, "Option -%c requires an operand\n",
    84                             optopt);
    85                         errflg++;
    8680                        break;
    8781
  • uspace/lib/c/Makefile

    r4805495 rd5a89a3  
    190190TEST_SOURCES = \
    191191        test/adt/circ_buf.c \
     192        test/adt/odict.c \
    192193        test/casting.c \
    193194        test/fibril/timer.c \
     
    197198        test/io/table.c \
    198199        test/stdio/scanf.c \
    199         test/odict.c \
    200200        test/perf.c \
    201201        test/perm.c \
     
    205205        test/stdlib.c \
    206206        test/str.c \
    207         test/string.c
     207        test/string.c \
     208        test/cap.c \
     209        test/gsort.c \
     210        test/ieee_double.c \
     211        test/double_to_str.c \
     212        test/getopt.c \
     213        test/uuid.c \
     214        test/imath.c
    208215
    209216include $(USPACE_PREFIX)/Makefile.common
  • uspace/lib/c/generic/cap.c

    r4805495 rd5a89a3  
    160160
    161161        /* Round the number so that we have at most @c scap_max_sdig significant digits */
    162         sdig = 1 + ilog10_u64(cap->m); /* number of significant digits */
     162        rc = ilog10_u64(cap->m, &sdig); /* number of significant digits */
     163        sdig += 1;
     164        assert(rc == EOK);
    163165        if (sdig > scap_max_sdig) {
    164166                /* Number of digits to remove */
  • uspace/lib/c/generic/gsort.c

    r4805495 rd5a89a3  
    3333/**
    3434 * @file
    35  * @brief Sorting functions.
     35 * @brief Gnome Sort.
    3636 *
    37  * This files contains functions implementing several sorting
    38  * algorithms (e.g. quick sort and gnome sort).
     37 * This file contains an implementation of gnome sort
    3938 *
    4039 */
     
    8079                if ((i != 0) &&
    8180                    (cmp(INDEX(data, i, elem_size),
    82                     INDEX(data, i - 1, elem_size), arg) == -1)) {
     81                    INDEX(data, i - 1, elem_size), arg) <= -1)) {
    8382                        memcpy(slot, INDEX(data, i, elem_size), elem_size);
    8483                        memcpy(INDEX(data, i, elem_size), INDEX(data, i - 1, elem_size),
  • uspace/lib/c/generic/ieee_double.c

    r4805495 rd5a89a3  
    9292                if (ret.is_denormal) {
    9393                        ret.pos_val.significand = raw_significand;
    94                         ret.pos_val.exponent = 1 - exponent_bias;
     94                        if (raw_significand == 0) {
     95                                ret.pos_val.exponent = -exponent_bias;
     96                        } else {
     97                                ret.pos_val.exponent = 1 - exponent_bias;
     98                        }
     99
    95100                        ret.is_accuracy_step = false;
    96101                } else {
  • uspace/lib/c/generic/imath.c

    r4805495 rd5a89a3  
    5050errno_t ipow10_u64(unsigned exp, uint64_t *res)
    5151{
    52         unsigned a;
     52        uint64_t a;
    5353        uint64_t r;
    5454
     
    8181 *
    8282 * @param v Value to compute logarithm from
     83 * @param res Place to store result
     84 * @return EOK on success
    8385 * @return Logarithm value
    8486 */
    85 unsigned ilog10_u64(uint64_t v)
     87errno_t ilog10_u64(uint64_t v, unsigned *res)
    8688{
     89        if (v == 0)
     90                return ERANGE;
     91
    8792        unsigned b;
    8893        unsigned e;
     
    117122        }
    118123
    119         return r;
     124        *res = r;
     125        return EOK;
    120126}
    121127
  • uspace/lib/c/generic/string.c

    r4805495 rd5a89a3  
    565565        }
    566566
    567         strcpy(dup, s);
     567        strncpy(dup, s, sz);
    568568        return dup;
    569569}
  • uspace/lib/c/generic/uuid.c

    r4805495 rd5a89a3  
    3939#include <stddef.h>
    4040#include <str.h>
     41#include <stdio.h>
    4142
    4243/** Generate UUID.
     
    6465
    6566        /* Version 4 UUID from random or pseudo-random numbers */
    66         uuid->b[8] = (uuid->b[8] & ~0xc0) | 0x40;
    67         uuid->b[6] = (uuid->b[6] & 0xf0) | 0x40;
    68 
    69         return EOK;
     67        uuid->b[6] = (uuid->b[6] & 0x4F) | 0x40;
     68        uuid->b[8] = (uuid->b[8] & 0xBF) | 0xB0;
     69       
     70        rc = EOK;
    7071error:
    7172        rndgen_destroy(rndgen);
     
    139140
    140141        rc = str_uint64_t(str + 24, &eptr, 16, false, &node);
    141         if (rc != EOK || eptr != str + 36 || *eptr != '\0')
     142        if (rc != EOK || eptr != str + 36)
    142143                return EINVAL;
    143144
     
    176177 * @return EOK on success, ENOMEM if out of memory
    177178 */
    178 errno_t uuid_format(uuid_t *uuid, char **rstr)
    179 {
    180         return ENOTSUP;
     179errno_t uuid_format(uuid_t *uuid, char **rstr, bool uppercase)
     180{
     181        size_t size = 37;
     182        char *str = malloc(sizeof(char) * size);
     183        if (str == NULL)
     184                return ENOMEM;
     185       
     186        const char *format = "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x";
     187        if (uppercase)
     188                format = "%02X%02X%02X%02X-%02X%02X-%02X%02X-%02X%02X-%02X%02X%02X%02X%02X%02X";
     189
     190        int ret = snprintf(str, size, format, uuid->b[0], uuid->b[1], uuid->b[2], uuid->b[3], uuid->b[4], uuid->b[5], uuid->b[6], uuid->b[7], uuid->b[8], uuid->b[9], uuid->b[10], uuid->b[11], uuid->b[12], uuid->b[13], uuid->b[14], uuid->b[15]);
     191       
     192        if (ret != 36)
     193                return EINVAL;
     194
     195        *rstr = str;
     196        return EOK;
    181197}
    182198
  • uspace/lib/c/include/imath.h

    r4805495 rd5a89a3  
    4040
    4141extern errno_t ipow10_u64(unsigned, uint64_t *);
    42 extern unsigned ilog10_u64(uint64_t);
     42extern errno_t ilog10_u64(uint64_t, unsigned *);
    4343
    4444#endif
  • uspace/lib/c/include/uuid.h

    r4805495 rd5a89a3  
    3838#include <stdint.h>
    3939#include <types/uuid.h>
     40#include <stdbool.h>
    4041
    4142extern errno_t uuid_generate(uuid_t *);
     
    4344extern void uuid_decode(uint8_t *, uuid_t *);
    4445extern errno_t uuid_parse(const char *, uuid_t *, const char **);
    45 extern errno_t uuid_format(uuid_t *, char **);
     46extern errno_t uuid_format(uuid_t *, char **, bool);
    4647
    4748#endif
  • uspace/lib/c/test/main.c

    r4805495 rd5a89a3  
    4848PCUT_IMPORT(string);
    4949PCUT_IMPORT(table);
     50PCUT_IMPORT(cap);
     51PCUT_IMPORT(gsort);
     52PCUT_IMPORT(ieee_double);
     53PCUT_IMPORT(double_to_str);
     54PCUT_IMPORT(getopt);
     55PCUT_IMPORT(uuid);
     56PCUT_IMPORT(imath);
    5057
    5158PCUT_MAIN();
Note: See TracChangeset for help on using the changeset viewer.