Skip to content

Commit 64d69d8

Browse files
author
olevole
committed
cleanup code
1 parent f26c8da commit 64d69d8

File tree

3 files changed

+145
-186
lines changed

3 files changed

+145
-186
lines changed

bin/cbsdsh/sqlcmd.c

Lines changed: 72 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -304,36 +304,51 @@ sqlcmd(int argc, char **argv)
304304
}
305305
#endif
306306

307+
// Helper function to build SQL query from argv
308+
static char *build_query(int argc, char **argv, int start) {
309+
size_t len = 0;
310+
for (int i = start; i < argc; i++)
311+
len += strlen(argv[i]) + 1;
312+
if (len == 0)
313+
return NULL;
314+
char *query = malloc(len);
315+
if (!query)
316+
return NULL;
317+
char *tmp = query;
318+
for (int i = start; i < argc; i++) {
319+
strcpy(tmp, argv[i]);
320+
tmp += strlen(tmp);
321+
*tmp = ' ';
322+
tmp++;
323+
}
324+
tmp[-1] = 0;
325+
return query;
326+
}
327+
307328
int
308329
sqlitecmdrw(int argc, char **argv)
309330
{
310331
sqlite3 *db;
311332
int res;
312-
int i;
313-
char *query;
314-
char *tmp;
333+
char *query = NULL;
315334
char *dbdir;
316335
char *dbfile;
317336
int ret = 0;
318-
sqlite3_stmt *stmt;
337+
sqlite3_stmt *stmt = NULL;
319338
char *cp;
320339
int maxretry = 50;
321340
int retry = 0;
322341

323-
// const char journal_mode_sql[] = "PRAGMA journal_mode = MEMORY;";
324-
// const char journal_mode_sql[] = "PRAGMA journal_mode = WAL;"; //
325-
// SR - not used?
326-
327342
if (argc < 3) {
328343
out1fmt("%s: format: %s <dbfile> <query>\n", nm(), nm());
329-
return (1); // SR: Usage should also give an error for scripting
344+
return 1;
330345
}
331346

332347
if (argv[1][0] == '@') {
333348
#ifndef WITH_DBI
334349
printf(
335350
"External SQL not implemented, recompile cbsdsh WITH_DBI\n");
336-
return (1);
351+
return 1;
337352
#else
338353
return (sqlcmd(argc, argv));
339354
#endif
@@ -344,29 +359,33 @@ sqlitecmdrw(int argc, char **argv)
344359
else
345360
delim = cp;
346361
if (argv[1][0] != '/') {
347-
// search file in dbdir
348362
dbdir = lookupvar("dbdir");
349-
i = strlen(dbdir) + strlen(argv[1]);
350-
dbfile = calloc(strlen(dbdir) + strlen(argv[1]) +
351-
strlen(DBPOSTFIX) + 1,
352-
sizeof(char *));
353-
363+
if (!dbdir) {
364+
error("dbdir not set!\n");
365+
return 1;
366+
}
367+
size_t dbfile_len = strlen(dbdir) + strlen(argv[1]) + strlen(DBPOSTFIX) + 2;
368+
dbfile = calloc(dbfile_len, sizeof(char));
354369
if (dbfile == NULL) {
355370
error("Out of memory!\n");
356-
return (1);
371+
return 1;
357372
}
358-
sprintf(dbfile, "%s/%s%s", dbdir, argv[1], DBPOSTFIX);
373+
snprintf(dbfile, dbfile_len, "%s/%s%s", dbdir, argv[1], DBPOSTFIX);
359374
} else {
360-
dbfile = calloc(strlen(argv[1]) + 1, sizeof(char *));
361-
sprintf(dbfile, "%s", argv[1]);
375+
size_t dbfile_len = strlen(argv[1]) + 1;
376+
dbfile = calloc(dbfile_len, sizeof(char));
377+
if (dbfile == NULL) {
378+
error("Out of memory!\n");
379+
return 1;
380+
}
381+
snprintf(dbfile, dbfile_len, "%s", argv[1]);
362382
}
363383

364384
if (SQLITE_OK !=
365385
(res = sqlite3_open_v2(dbfile, &db,
366386
SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE |
367387
SQLITE_OPEN_SHAREDCACHE,
368388
NULL))) {
369-
// if (SQLITE_OK != (res = sqlite3_open(dbfile, &db))) {
370389
out1fmt("%s: Can't open database file: %s\n", nm(), dbfile);
371390
free(dbfile);
372391
return 1;
@@ -378,27 +397,14 @@ sqlitecmdrw(int argc, char **argv)
378397
sql_exec(db, "PRAGMA journal_mode = WAL;");
379398
sql_exec(db, "PRAGMA synchronous = NORMAL;");
380399

381-
// https://www.sqlite.org/quirks.html#double_quoted_string_literals_are_accepted
382400
sqlite3_db_config(db, SQLITE_DBCONFIG_DQS_DDL, 1, (void*)0);
383401
sqlite3_db_config(db, SQLITE_DBCONFIG_DQS_DML, 1, (void*)0);
384402

385-
// sql_exec(db, "PRAGMA journal_mode=DELETE;");
386-
// sql_exec(db,"PRAGMA journal_mode = OFF;");
387-
// sql_exec(db,"PRAGMA journal_mode = TRUNCATE;");
388-
389-
res = 0;
390-
for (i = 2; i < argc; i++)
391-
res += strlen(argv[i]) + 1;
392-
if (res) {
393-
query = (char *)sqlite3_malloc(res);
394-
tmp = query;
395-
for (i = 2; i < argc; i++) {
396-
strcpy(tmp, argv[i]);
397-
tmp += strlen(tmp);
398-
*tmp = ' ';
399-
tmp++;
400-
}
401-
tmp[-1] = 0;
403+
query = build_query(argc, argv, 2);
404+
if (!query) {
405+
sqlite3_close(db);
406+
error("Failed to build query string!\n");
407+
return 1;
402408
}
403409

404410
do {
@@ -407,27 +413,21 @@ sqlitecmdrw(int argc, char **argv)
407413
sqlite3_exec(db, "COMMIT", 0, 0, 0);
408414
if (ret == SQLITE_OK)
409415
break;
410-
// if (ret==SQLITE_BUSY) {
411-
// usleep(15000);
412416
retry++;
413-
414417
if (retry > maxretry)
415418
break;
416-
// sqlite3_prepare_v2(db, journal_mode_sql, -1,
417-
//&stmt, NULL);
418419
} while (ret != SQLITE_OK);
419420

420421
if (ret == SQLITE_OK) {
421422
ret = sqlite3_step(stmt);
422-
423-
// Handle the results
424423
while (ret == SQLITE_ROW) {
425424
sqlCB(stmt);
426425
ret = sqlite3_step(stmt);
427426
}
428427
}
429428

430-
sqlite3_finalize(stmt);
429+
if (stmt)
430+
sqlite3_finalize(stmt);
431431
sqlite3_free(query);
432432
sqlite3_close(db);
433433

@@ -439,24 +439,19 @@ sqlitecmdro(int argc, char **argv)
439439
{
440440
sqlite3 *db;
441441
int res;
442-
int i;
443-
char *query;
444-
char *tmp;
442+
char *query = NULL;
445443
char *dbdir;
446444
char *dbfile;
447445
int ret = 0;
448-
sqlite3_stmt *stmt;
446+
sqlite3_stmt *stmt = NULL;
449447
char *cp;
450448
int maxretry = 50;
451449
int retry = 0;
452450

453-
// const char journal_mode_sql[] = "PRAGMA journal_mode = MEMORY;";
454-
// const char journal_mode_sql[] = "PRAGMA journal_mode=DELETE;";
455-
456451
if (argv[1][0] == '@') {
457452
#ifndef WITH_DBI
458453
printf("External SQL not implemented, recompile WITH_DBI\n");
459-
return (1);
454+
return 1;
460455
#else
461456
return (sqlcmd(argc, argv));
462457
#endif
@@ -473,21 +468,26 @@ sqlitecmdro(int argc, char **argv)
473468
}
474469

475470
if (argv[1][0] != '/') {
476-
// search file in dbdir
477471
dbdir = lookupvar("dbdir");
478-
i = strlen(dbdir) + strlen(argv[1]);
479-
dbfile = calloc(strlen(dbdir) + strlen(argv[1]) +
480-
strlen(DBPOSTFIX) + 1,
481-
sizeof(char *));
482-
472+
if (!dbdir) {
473+
error("dbdir not set!\n");
474+
return 1;
475+
}
476+
size_t dbfile_len = strlen(dbdir) + strlen(argv[1]) + strlen(DBPOSTFIX) + 2;
477+
dbfile = calloc(dbfile_len, sizeof(char));
483478
if (dbfile == NULL) {
484479
error("Out of memory!\n");
485-
return (1);
480+
return 1;
486481
}
487-
sprintf(dbfile, "%s/%s%s", dbdir, argv[1], DBPOSTFIX);
482+
snprintf(dbfile, dbfile_len, "%s/%s%s", dbdir, argv[1], DBPOSTFIX);
488483
} else {
489-
dbfile = calloc(strlen(argv[1]) + 1, sizeof(char *));
490-
sprintf(dbfile, "%s", argv[1]);
484+
size_t dbfile_len = strlen(argv[1]) + 1;
485+
dbfile = calloc(dbfile_len, sizeof(char));
486+
if (dbfile == NULL) {
487+
error("Out of memory!\n");
488+
return 1;
489+
}
490+
snprintf(dbfile, dbfile_len, "%s", argv[1]);
491491
}
492492

493493
if (SQLITE_OK !=
@@ -501,52 +501,37 @@ sqlitecmdro(int argc, char **argv)
501501

502502
sqlite3_busy_timeout(db, CBSD_SQLITE_BUSY_TIMEOUT);
503503

504-
res = 0;
505-
for (i = 2; i < argc; i++)
506-
res += strlen(argv[i]) + 1;
507-
508-
if (res) {
509-
query = (char *)sqlite3_malloc(res);
510-
tmp = query;
511-
for (i = 2; i < argc; i++) {
512-
strcpy(tmp, argv[i]);
513-
tmp += strlen(tmp);
514-
*tmp = ' ';
515-
tmp++;
516-
}
517-
tmp[-1] = 0;
504+
query = build_query(argc, argv, 2);
505+
if (!query) {
506+
sqlite3_close(db);
507+
error("Failed to build query string!\n");
508+
return 1;
518509
}
519510

520511
sql_exec(db, "PRAGMA mmap_size = 209715200;");
521512

522-
// https://www.sqlite.org/quirks.html#double_quoted_string_literals_are_accepted
523513
sqlite3_db_config(db, SQLITE_DBCONFIG_DQS_DDL, 1, (void*)0);
524514
sqlite3_db_config(db, SQLITE_DBCONFIG_DQS_DML, 1, (void*)0);
525515

526516
do {
527517
ret = sqlite3_prepare_v2(db, query, -1, &stmt, NULL);
528518
if (ret == SQLITE_OK)
529519
break;
530-
// if (ret==SQLITE_BUSY) {
531-
// usleep(15000);
532520
retry++;
533521
if (retry > maxretry)
534522
break;
535-
// sqlite3_prepare_v2(db, journal_mode_sql, -1,
536-
//&stmt, NULL);
537-
538523
} while (ret != SQLITE_OK);
539524

540525
if (ret == SQLITE_OK) {
541526
ret = sqlite3_step(stmt);
542-
543527
while (ret == SQLITE_ROW) {
544528
sqlCB(stmt);
545529
ret = sqlite3_step(stmt);
546530
}
547531
}
548532

549-
sqlite3_finalize(stmt);
533+
if (stmt)
534+
sqlite3_finalize(stmt);
550535
sqlite3_free(query);
551536
sqlite3_close(db);
552537

cbsd.conf

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,6 @@ esac
157157

158158
[ -n "${NOCOLOR}" ] && NOCOLOR=1
159159

160-
[ -r "${nodenamefile}" ] && nodename=$( cat ${nodenamefile} | awk '{printf $1}' )
161160

162161
if [ -n "${CBSD_DEBUG}" ]; then
163162
export NOCOLOR=1
@@ -189,12 +188,17 @@ fi
189188

190189
[ -f "${inventory}" ] && . ${inventory}
191190
# Load _CMD variable: Default and custom by platform name
192-
[ -z "${platform}" ] && platform=$( uname -s )
191+
[ -z "${platform}" ] && platform=$( /usr/bin/uname -s )
192+
193193
# Overwrite $platform to HardenedBSD if we have /usr/sbin/hbsd-update:
194194
[ -e "/usr/sbin/hbsd-update" ] && platform="HardenedBSD"
195195
[ -f ${workdir}/cmd.subr ] && . ${workdir}/cmd.subr
196196
[ -f "${subrdir}/${platform}.subr" ] && . ${subrdir}/${platform}.subr
197197

198+
if [ -r "${nodenamefile}" ]; then
199+
nodename=$( ${HEAD_CMD} -n1 ${nodenamefile} )
200+
fi
201+
198202
if [ -z "${freebsdhostversion}" ]; then
199203
export freebsdhostversion=$( ${miscdir}/elf_tables --ver /bin/sh 2>/dev/null )
200204
[ -z "${freebsdhostversion}" ] && export freebsdhostversion="0"

0 commit comments

Comments
 (0)