Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitc98c911

Browse files
committed
Minor code embellishments.
1 parenta1feb90 commitc98c911

File tree

1 file changed

+43
-50
lines changed
  • src/backend/utils/misc

1 file changed

+43
-50
lines changed

‎src/backend/utils/misc/guc.c

Lines changed: 43 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
* Written by Peter Eisentraut <peter_e@gmx.net>.
1111
*
1212
* IDENTIFICATION
13-
* $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.481 2008/11/21 20:14:27 mha Exp $
13+
* $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.482 2008/12/02 02:00:32 alvherre Exp $
1414
*
1515
*--------------------------------------------------------------------
1616
*/
@@ -4382,16 +4382,17 @@ parse_real(const char *value, double *result)
43824382
constchar*
43834383
config_enum_lookup_by_value(structconfig_enum*record,intval)
43844384
{
4385-
conststructconfig_enum_entry*entry=record->options;
4386-
while (entry&&entry->name)
4385+
conststructconfig_enum_entry*entry;
4386+
4387+
for (entry=record->options;entry&&entry->name;entry++)
43874388
{
43884389
if (entry->val==val)
43894390
returnentry->name;
4390-
entry++;
43914391
}
4392+
43924393
elog(ERROR,"could not find enum option %d for %s",
43934394
val,record->gen.name);
4394-
returnNULL;/* silence compiler */
4395+
returnNULL;/* silence compiler */
43954396
}
43964397

43974398

@@ -4400,86 +4401,71 @@ config_enum_lookup_by_value(struct config_enum *record, int val)
44004401
* (case-insensitive).
44014402
* If the enum option is found, sets the retval value and returns
44024403
* true. If it's not found, return FALSE and retval is set to 0.
4403-
*
44044404
*/
44054405
bool
4406-
config_enum_lookup_by_name(structconfig_enum*record,constchar*value,int*retval)
4406+
config_enum_lookup_by_name(structconfig_enum*record,constchar*value,
4407+
int*retval)
44074408
{
4408-
conststructconfig_enum_entry*entry=record->options;
4409-
4410-
if (retval)
4411-
*retval=0;/* suppress compiler warning */
4412-
4413-
while (entry&&entry->name)
4409+
conststructconfig_enum_entry*entry;
4410+
4411+
for (entry=record->options;entry&&entry->name;entry++)
44144412
{
44154413
if (pg_strcasecmp(value,entry->name)==0)
44164414
{
44174415
*retval=entry->val;
44184416
return TRUE;
44194417
}
4420-
entry++;
44214418
}
4419+
4420+
*retval=0;
44224421
return FALSE;
44234422
}
44244423

44254424

44264425
/*
44274426
* Return a list of all available options for an enum, excluding
4428-
* hidden ones, separated by", " (comma-space).
4427+
* hidden ones, separated bythe given separator.
44294428
* If prefix is non-NULL, it is added before the first enum value.
44304429
* If suffix is non-NULL, it is added to the end of the string.
44314430
*/
44324431
staticchar*
44334432
config_enum_get_options(structconfig_enum*record,constchar*prefix,
44344433
constchar*suffix,constchar*separator)
44354434
{
4436-
conststructconfig_enum_entry*entry=record->options;
4437-
intlen=0;
4438-
char*hintmsg;
4439-
4440-
if (!entry|| !entry->name)
4441-
returnNULL;/* Should not happen */
4435+
conststructconfig_enum_entry*entry;
4436+
StringInfoDataretstr;
4437+
intseplen;
44424438

4443-
while (entry&&entry->name)
4444-
{
4445-
if (!entry->hidden)
4446-
len+=strlen(entry->name)+strlen(separator);
4447-
4448-
entry++;
4449-
}
4450-
4451-
hintmsg=palloc(len+strlen(prefix)+strlen(suffix)+2);
4452-
4453-
strcpy(hintmsg,prefix);
4439+
initStringInfo(&retstr);
4440+
appendStringInfoString(&retstr,prefix);
44544441

4455-
entry=record->options;
4456-
while (entry&&entry->name)
4442+
seplen=strlen(separator);
4443+
for (entry=record->options;entry&&entry->name;entry++)
44574444
{
44584445
if (!entry->hidden)
44594446
{
4460-
strcat(hintmsg,entry->name);
4461-
strcat(hintmsg,separator);
4447+
appendStringInfoString(&retstr,entry->name);
4448+
appendBinaryStringInfo(&retstr,separator,seplen);
44624449
}
4463-
4464-
entry++;
44654450
}
44664451

4467-
len=strlen(hintmsg);
4468-
44694452
/*
44704453
* All the entries may have been hidden, leaving the string empty
44714454
* if no prefix was given. This indicates a broken GUC setup, since
44724455
* there is no use for an enum without any values, so we just check
44734456
* to make sure we don't write to invalid memory instead of actually
44744457
* trying to do something smart with it.
44754458
*/
4476-
if (len >=strlen(separator))
4459+
if (retstr.len >=seplen)
4460+
{
44774461
/* Replace final separator */
4478-
hintmsg[len-strlen(separator)]='\0';
4462+
retstr.data[retstr.len-seplen]='\0';
4463+
retstr.len-=seplen;
4464+
}
44794465

4480-
strcat(hintmsg,suffix);
4466+
appendStringInfoString(&retstr,suffix);
44814467

4482-
returnhintmsg;
4468+
returnretstr.data;
44834469
}
44844470

44854471
/*
@@ -5047,7 +5033,11 @@ set_config_option(const char *name, const char *value,
50475033
{
50485034
if (!config_enum_lookup_by_name(conf,value,&newval))
50495035
{
5050-
char*hintmsg=config_enum_get_options(conf,"Available values: ",".",", ");
5036+
char*hintmsg;
5037+
5038+
hintmsg=config_enum_get_options(conf,
5039+
"Available values: ",
5040+
".",", ");
50515041

50525042
ereport(elevel,
50535043
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
@@ -6253,13 +6243,16 @@ GetConfigOptionByNum(int varnum, const char **values, bool *noshow)
62536243

62546244
/* enumvals */
62556245
/* NOTE! enumvals with double quotes in them are not supported! */
6256-
values[11]=config_enum_get_options((structconfig_enum*)conf,"{\"","\"}","\",\"");
6246+
values[11]=config_enum_get_options((structconfig_enum*)conf,
6247+
"{\"","\"}","\",\"");
62576248

62586249
/* boot_val */
6259-
values[12]=pstrdup(config_enum_lookup_by_value(lconf,lconf->boot_val));
6250+
values[12]=pstrdup(config_enum_lookup_by_value(lconf,
6251+
lconf->boot_val));
62606252

62616253
/* reset_val */
6262-
values[13]=pstrdup(config_enum_lookup_by_value(lconf,lconf->reset_val));
6254+
values[13]=pstrdup(config_enum_lookup_by_value(lconf,
6255+
lconf->reset_val));
62636256
}
62646257
break;
62656258

@@ -6672,8 +6665,8 @@ is_newvalue_equal(struct config_generic * record, const char *newvalue)
66726665
structconfig_enum*conf= (structconfig_enum*)record;
66736666
intnewval;
66746667

6675-
returnconfig_enum_lookup_by_name(conf,newvalue,&newval)
6676-
&&*conf->variable==newval;
6668+
returnconfig_enum_lookup_by_name(conf,newvalue,&newval)&&
6669+
*conf->variable==newval;
66776670
}
66786671
}
66796672

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp