Changeset 1dcba91 in mainline for uspace/lib/sif/src/sif.c


Ignore:
Timestamp:
2018-08-08T10:08:53Z (6 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
44428bb
Parents:
7ab7075f
git-author:
Jiri Svoboda <jiri@…> (2018-08-07 17:07:59)
git-committer:
Jiri Svoboda <jiri@…> (2018-08-08 10:08:53)
Message:

Configuration repository for volume server.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/sif/src/sif.c

    r7ab7075f r1dcba91  
    191191                return ENOMEM;
    192192
     193        sess->fname = str_dup(fname);
     194        if (sess->fname == NULL) {
     195                rc = ENOMEM;
     196                goto error;
     197        }
     198
    193199        root = sif_node_new(NULL);
    194200        if (root == NULL) {
     
    227233                sif_trans_abort(trans);
    228234        sif_node_delete(root);
     235        if (sess->fname != NULL)
     236                free(sess->fname);
    229237        free(sess);
    230238        return rc;
     
    249257                return ENOMEM;
    250258
    251         f = fopen(fname, "r+");
     259        sess->fname = str_dup(fname);
     260        if (sess->fname == NULL) {
     261                rc = ENOMEM;
     262                goto error;
     263        }
     264
     265        f = fopen(fname, "r");
    252266        if (f == NULL) {
    253267                rc = EIO;
     
    272286error:
    273287        sif_node_delete(root);
     288        if (sess->fname != NULL)
     289                free(sess->fname);
    274290        free(sess);
    275291        return rc;
     
    290306        }
    291307
     308        if (sess->fname != NULL)
     309                free(sess->fname);
     310        free(sess);
    292311        return EOK;
    293312}
     
    394413        errno_t rc;
    395414
    396         rewind(trans->sess->f);
     415        (void) fclose(trans->sess->f);
     416
     417        trans->sess->f = fopen(trans->sess->fname, "w");
     418        if (trans->sess->f == NULL)
     419                return EIO;
    397420
    398421        rc = sif_export_node(trans->sess->root, trans->sess->f);
    399422        if (rc != EOK)
    400423                return rc;
     424
     425        if (fputc('\n', trans->sess->f) == EOF)
     426                return EIO;
     427
     428        if (fflush(trans->sess->f) == EOF)
     429                return EIO;
    401430
    402431        free(trans);
Note: See TracChangeset for help on using the changeset viewer.