Changeset 806d761 in mainline for uspace/lib/tbarcfg
- Timestamp:
- 2024-02-07T23:44:59Z (2 years ago)
- Branches:
- master
- Children:
- 242e3c3
- Parents:
- 74cb6610
- Location:
- uspace/lib/tbarcfg
- Files:
-
- 4 edited
-
include/tbarcfg/tbarcfg.h (modified) (3 diffs)
-
private/tbarcfg.h (modified) (3 diffs)
-
src/tbarcfg.c (modified) (12 diffs)
-
test/tbarcfg.c (modified) (13 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/tbarcfg/include/tbarcfg/tbarcfg.h
r74cb6610 r806d761 1 1 /* 2 * Copyright (c) 202 3Jiri Svoboda2 * Copyright (c) 2024 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 39 39 #include <errno.h> 40 40 #include <sif.h> 41 #include <stdbool.h> 41 42 #include <types/tbarcfg/tbarcfg.h> 42 43 … … 48 49 extern const char *smenu_entry_get_caption(smenu_entry_t *); 49 50 extern const char *smenu_entry_get_cmd(smenu_entry_t *); 51 extern bool smenu_entry_get_terminal(smenu_entry_t *); 50 52 extern errno_t smenu_entry_set_caption(smenu_entry_t *, const char *); 51 53 extern errno_t smenu_entry_set_cmd(smenu_entry_t *, const char *); 54 extern void smenu_entry_set_terminal(smenu_entry_t *, bool); 52 55 extern errno_t smenu_entry_save(smenu_entry_t *); 53 56 extern errno_t smenu_entry_create(tbarcfg_t *, const char *, const char *, 54 smenu_entry_t **);57 bool, smenu_entry_t **); 55 58 extern errno_t smenu_entry_destroy(smenu_entry_t *); 56 59 -
uspace/lib/tbarcfg/private/tbarcfg.h
r74cb6610 r806d761 1 1 /* 2 * Copyright (c) 202 3Jiri Svoboda2 * Copyright (c) 2024 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 40 40 #include <adt/list.h> 41 41 #include <sif.h> 42 #include <stdbool.h> 42 43 #include <types/tbarcfg/tbarcfg.h> 43 44 … … 64 65 /** Command to run */ 65 66 char *cmd; 67 /** Start in terminal */ 68 bool terminal; 66 69 }; 67 70 68 71 extern errno_t smenu_entry_new(tbarcfg_t *, sif_node_t *, const char *, 69 const char *, smenu_entry_t **);72 const char *, bool, smenu_entry_t **); 70 73 extern void smenu_entry_delete(smenu_entry_t *); 71 74 -
uspace/lib/tbarcfg/src/tbarcfg.c
r74cb6610 r806d761 1 1 /* 2 * Copyright (c) 202 3Jiri Svoboda2 * Copyright (c) 2024 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 101 101 * @return EOK on success or an error code 102 102 */ 103 #include <stdio.h> 103 104 errno_t tbarcfg_open(const char *repopath, tbarcfg_t **rtbcfg) 104 105 { … … 110 111 const char *caption; 111 112 const char *cmd; 113 const char *terminal = NULL; 112 114 errno_t rc; 113 115 … … 154 156 } 155 157 156 rc = smenu_entry_new(tbcfg, nentry, caption, cmd, NULL); 158 terminal = sif_node_get_attr(nentry, "terminal"); 159 if (terminal == NULL) 160 terminal = "n"; 161 162 printf("terminal=%s\n", terminal); 163 164 rc = smenu_entry_new(tbcfg, nentry, caption, cmd, 165 str_cmp(terminal, "y") == 0, NULL); 157 166 if (rc != EOK) 158 167 goto error; … … 233 242 /** Get start menu entry command. 234 243 * 235 * @param entr Start menu entry244 * @param entry Start menu entry 236 245 * @return Command to run 237 246 */ … … 239 248 { 240 249 return entry->cmd; 250 } 251 252 /** Get start menu start in terminal flag. 253 * 254 * @param entry Start menu entry 255 * @return Start in terminal flag 256 */ 257 bool smenu_entry_get_terminal(smenu_entry_t *entry) 258 { 259 return entry->terminal; 241 260 } 242 261 … … 285 304 } 286 305 306 /** Set start menu entry start in terminal flag. 307 * 308 * Note: To make the change visible to others and persistent, 309 * you must call @c smenu_entry_save() 310 * 311 * @param entry Start menu entry 312 * @param terminal Start in terminal flag 313 */ 314 void smenu_entry_set_terminal(smenu_entry_t *entry, bool terminal) 315 { 316 entry->terminal = terminal; 317 } 318 287 319 /** Save any changes to start menu entry. 288 320 * … … 303 335 304 336 rc = sif_node_set_attr(trans, entry->nentry, "caption", entry->caption); 337 if (rc != EOK) 338 goto error; 339 340 rc = sif_node_set_attr(trans, entry->nentry, "terminal", 341 entry->terminal ? "y" : "n"); 305 342 if (rc != EOK) 306 343 goto error; … … 325 362 * @param caption Caption 326 363 * @param cmd Command to run 364 * @param terminal Start in terminal 327 365 * @param rentry Place to store pointer to new entry or @c NULL 328 366 */ 329 367 errno_t smenu_entry_new(tbarcfg_t *smenu, sif_node_t *nentry, 330 const char *caption, const char *cmd, smenu_entry_t **rentry)368 const char *caption, const char *cmd, bool terminal, smenu_entry_t **rentry) 331 369 { 332 370 smenu_entry_t *entry; … … 352 390 goto error; 353 391 } 392 393 entry->terminal = terminal; 354 394 355 395 entry->smenu = smenu; … … 391 431 * @param caption Caption 392 432 * @param cmd Command to run 433 * @param terminal Start in terminal 393 434 * @param rentry Place to store pointer to new entry or @c NULL 394 435 */ 395 436 errno_t smenu_entry_create(tbarcfg_t *smenu, const char *caption, 396 const char *cmd, smenu_entry_t **rentry)437 const char *cmd, bool terminal, smenu_entry_t **rentry) 397 438 { 398 439 sif_node_t *nentry; … … 418 459 goto error; 419 460 420 rc = smenu_entry_new(smenu, nentry, caption, cmd, &entry); 461 rc = sif_node_set_attr(trans, nentry, "terminal", terminal ? "y" : "n"); 462 if (rc != EOK) 463 goto error; 464 465 rc = smenu_entry_new(smenu, nentry, caption, cmd, terminal ? "y" : "n", 466 &entry); 421 467 if (rc != EOK) 422 468 goto error; -
uspace/lib/tbarcfg/test/tbarcfg.c
r74cb6610 r806d761 1 1 /* 2 * Copyright (c) 202 3Jiri Svoboda2 * Copyright (c) 2024 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 76 76 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 77 77 78 rc = smenu_entry_create(tbcfg, "A", "a", &e1);78 rc = smenu_entry_create(tbcfg, "A", "a", false, &e1); 79 79 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 80 80 PCUT_ASSERT_NOT_NULL(e1); 81 81 82 rc = smenu_entry_create(tbcfg, "B", "b", &e2);82 rc = smenu_entry_create(tbcfg, "B", "b", false, &e2); 83 83 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 84 84 PCUT_ASSERT_NOT_NULL(e2); 85 85 86 86 /* Create entry without getting a pointer to it */ 87 rc = smenu_entry_create(tbcfg, "C", "c", NULL);87 rc = smenu_entry_create(tbcfg, "C", "c", false, NULL); 88 88 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 89 89 … … 102 102 103 103 /** Getting menu entry properties */ 104 PCUT_TEST(get_caption_cmd )104 PCUT_TEST(get_caption_cmd_term) 105 105 { 106 106 errno_t rc; … … 110 110 const char *caption; 111 111 const char *cmd; 112 113 p = tmpnam(fname); 114 PCUT_ASSERT_NOT_NULL(p); 115 116 rc = tbarcfg_create(fname, &tbcfg); 117 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 118 119 rc = smenu_entry_create(tbcfg, "A", "a", &e); 112 bool terminal; 113 114 p = tmpnam(fname); 115 PCUT_ASSERT_NOT_NULL(p); 116 117 rc = tbarcfg_create(fname, &tbcfg); 118 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 119 120 rc = smenu_entry_create(tbcfg, "A", "a", false, &e); 120 121 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 121 122 … … 124 125 cmd = smenu_entry_get_cmd(e); 125 126 PCUT_ASSERT_STR_EQUALS("a", cmd); 127 terminal = smenu_entry_get_terminal(e); 128 PCUT_ASSERT_FALSE(terminal); 126 129 127 130 tbarcfg_close(tbcfg); … … 130 133 131 134 /** Setting menu entry properties */ 132 PCUT_TEST(set_caption_cmd )135 PCUT_TEST(set_caption_cmd_term) 133 136 { 134 137 errno_t rc; … … 138 141 const char *caption; 139 142 const char *cmd; 140 141 p = tmpnam(fname); 142 PCUT_ASSERT_NOT_NULL(p); 143 144 rc = tbarcfg_create(fname, &tbcfg); 145 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 146 147 rc = smenu_entry_create(tbcfg, "A", "a", &e); 143 bool terminal; 144 145 p = tmpnam(fname); 146 PCUT_ASSERT_NOT_NULL(p); 147 148 rc = tbarcfg_create(fname, &tbcfg); 149 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 150 151 rc = smenu_entry_create(tbcfg, "A", "a", false, &e); 148 152 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 149 153 … … 152 156 cmd = smenu_entry_get_cmd(e); 153 157 PCUT_ASSERT_STR_EQUALS("a", cmd); 158 terminal = smenu_entry_get_terminal(e); 159 PCUT_ASSERT_FALSE(terminal); 154 160 155 161 /* Set properties */ … … 158 164 rc = smenu_entry_set_cmd(e, "b"); 159 165 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 166 smenu_entry_set_terminal(e, true); 160 167 161 168 rc = smenu_entry_save(e); … … 167 174 cmd = smenu_entry_get_cmd(e); 168 175 PCUT_ASSERT_STR_EQUALS("b", cmd); 176 terminal = smenu_entry_get_terminal(e); 177 PCUT_ASSERT_TRUE(terminal); 169 178 170 179 tbarcfg_close(tbcfg); … … 197 206 const char *caption; 198 207 const char *cmd; 199 200 p = tmpnam(fname); 201 PCUT_ASSERT_NOT_NULL(p); 202 203 rc = tbarcfg_create(fname, &tbcfg); 204 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 205 206 rc = smenu_entry_create(tbcfg, "A", "a", &e); 208 bool terminal; 209 210 p = tmpnam(fname); 211 PCUT_ASSERT_NOT_NULL(p); 212 213 rc = tbarcfg_create(fname, &tbcfg); 214 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 215 216 rc = smenu_entry_create(tbcfg, "A", "a", false, &e); 207 217 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 208 218 PCUT_ASSERT_NOT_NULL(e); … … 212 222 cmd = smenu_entry_get_cmd(e); 213 223 PCUT_ASSERT_STR_EQUALS("a", cmd); 224 terminal = smenu_entry_get_terminal(e); 225 PCUT_ASSERT_FALSE(terminal); 226 227 smenu_entry_destroy(e); 228 229 rc = smenu_entry_create(tbcfg, "B", "b", true, &e); 230 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 231 PCUT_ASSERT_NOT_NULL(e); 232 233 caption = smenu_entry_get_caption(e); 234 PCUT_ASSERT_STR_EQUALS("B", caption); 235 cmd = smenu_entry_get_cmd(e); 236 PCUT_ASSERT_STR_EQUALS("b", cmd); 237 terminal = smenu_entry_get_terminal(e); 238 PCUT_ASSERT_TRUE(terminal); 239 240 smenu_entry_destroy(e); 214 241 215 242 tbarcfg_close(tbcfg); … … 231 258 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 232 259 233 rc = smenu_entry_create(tbcfg, "A", "a", &e);260 rc = smenu_entry_create(tbcfg, "A", "a", false, &e); 234 261 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 235 262
Note:
See TracChangeset
for help on using the changeset viewer.
