Changeset 84d29a2 in mainline for uspace/lib/tbarcfg/src/tbarcfg.c
- Timestamp:
- 2023-11-27T13:09:59Z (6 months ago)
- Branches:
- master, topic/simplify-dev-export
- Children:
- ef4d684
- Parents:
- 8a43f01
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/tbarcfg/src/tbarcfg.c
r8a43f01 r84d29a2 41 41 #include "../private/tbarcfg.h" 42 42 43 /** Create taskbar configuration. 44 * 45 * @param repopath Pathname of the new menu repository 46 * @param rtbcfg Place to store pointer to taskbar configuration 47 * @return EOK on success or an error code 48 */ 49 errno_t tbarcfg_create(const char *repopath, tbarcfg_t **rtbcfg) 50 { 51 tbarcfg_t *tbcfg; 52 sif_sess_t *repo = NULL; 53 sif_node_t *rnode; 54 errno_t rc; 55 sif_trans_t *trans = NULL; 56 57 tbcfg = calloc(1, sizeof(tbarcfg_t)); 58 if (tbcfg == NULL) { 59 rc = ENOMEM; 60 goto error; 61 } 62 63 list_initialize(&tbcfg->entries); 64 65 rc = sif_create(repopath, &repo); 66 if (rc != EOK) 67 goto error; 68 69 tbcfg->repo = repo; 70 71 rnode = sif_get_root(repo); 72 73 rc = sif_trans_begin(repo, &trans); 74 if (rc != EOK) 75 goto error; 76 77 rc = sif_node_append_child(trans, rnode, "entries", &tbcfg->nentries); 78 if (rc != EOK) 79 goto error; 80 81 rc = sif_trans_end(trans); 82 if (rc != EOK) 83 goto error; 84 85 *rtbcfg = tbcfg; 86 return EOK; 87 error: 88 if (trans != NULL) 89 sif_trans_abort(trans); 90 if (repo != NULL) 91 sif_close(repo); 92 if (tbcfg != NULL) 93 free(tbcfg); 94 return rc; 95 } 96 43 97 /** Open taskbar configuration. 44 98 * … … 52 106 sif_sess_t *repo = NULL; 53 107 sif_node_t *rnode; 54 sif_node_t *nentries;55 108 sif_node_t *nentry; 56 109 const char *ntype; … … 74 127 75 128 rnode = sif_get_root(repo); 76 nentries = sif_node_first_child(rnode);77 ntype = sif_node_get_type( nentries);129 tbcfg->nentries = sif_node_first_child(rnode); 130 ntype = sif_node_get_type(tbcfg->nentries); 78 131 if (str_cmp(ntype, "entries") != 0) { 79 132 rc = EIO; … … 81 134 } 82 135 83 nentry = sif_node_first_child( nentries);136 nentry = sif_node_first_child(tbcfg->nentries); 84 137 while (nentry != NULL) { 85 138 ntype = sif_node_get_type(nentry); … … 238 291 errno_t smenu_entry_save(smenu_entry_t *entry) 239 292 { 240 sif_trans_t *trans ;293 sif_trans_t *trans = NULL; 241 294 errno_t rc; 242 295 … … 329 382 } 330 383 384 /** Create new start menu entry. 385 * 386 * @param smenu Start menu 387 * @param nentry Backing SIF node 388 * @param caption Caption 389 * @param cmd Command to run 390 */ 391 errno_t smenu_entry_create(tbarcfg_t *smenu, const char *caption, 392 const char *cmd) 393 { 394 sif_node_t *nentry; 395 errno_t rc; 396 sif_trans_t *trans = NULL; 397 398 rc = sif_trans_begin(smenu->repo, &trans); 399 if (rc != EOK) 400 goto error; 401 402 rc = sif_node_append_child(trans, smenu->nentries, "entry", 403 &nentry); 404 if (rc != EOK) 405 goto error; 406 407 rc = smenu_entry_new(smenu, nentry, caption, cmd); 408 if (rc != EOK) 409 goto error; 410 411 rc = sif_trans_end(trans); 412 if (rc != EOK) 413 goto error; 414 415 return EOK; 416 error: 417 if (trans != NULL) 418 sif_trans_abort(trans); 419 return rc; 420 } 421 422 /** Destroy start menu entry.. 423 * 424 * @param entry Start menu entry 425 * @return EOK on success or an error code 426 */ 427 errno_t smenu_entry_destroy(smenu_entry_t *entry) 428 { 429 errno_t rc; 430 sif_trans_t *trans = NULL; 431 432 rc = sif_trans_begin(entry->smenu->repo, &trans); 433 if (rc != EOK) 434 goto error; 435 436 sif_node_destroy(trans, entry->nentry); 437 438 rc = sif_trans_end(trans); 439 if (rc != EOK) 440 goto error; 441 442 smenu_entry_delete(entry); 443 error: 444 if (trans != NULL) 445 sif_trans_abort(trans); 446 return rc; 447 } 448 331 449 /** @} 332 450 */
Note:
See TracChangeset
for help on using the changeset viewer.