- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
int param_check(char *func, ...) {
int fail;
va_list al;
if (!func) {
return(1);
}
va_start(al, func);
fail=0;
if (!strcmp(func, "vnetGenerateDHCP") || !strcmp(func, "vnetKickDHCP")) {
vnetConfig *a = va_arg(al, vnetConfig *);
if (!a) {
fail=1;
}
} else if (!strcmp(func, "vnetAddPublicIP") || !strcmp(func, "vnetAddDev")) {
vnetConfig *a = va_arg(al, vnetConfig *);
char *b = va_arg(al, char *);
if (!a || !b) {
fail=1;
}
} else if (!strcmp(func, "vnetAddHost")) {
vnetConfig *a = va_arg(al, vnetConfig *);
char *b = va_arg(al, char *);
char *c = va_arg(al, char *);
int d = va_arg(al, int);
if (!a || !b || (d < 0) || (d > NUMBER_OF_VLANS-1)) {
fail=1;
}
} else if (!strcmp(func, "vnetGetNextHost")) {
vnetConfig *a = va_arg(al, vnetConfig *);
char *b = va_arg(al, char *);
char *c = va_arg(al, char *);
int d = va_arg(al, int);
if (!a || !b || !c || d < 0 || d > NUMBER_OF_VLANS-1) {
fail=1;
}
} else if (!strcmp(func, "vnetDelHost") || !strcmp(func, "vnetEnableHost") || !strcmp(func, "vnetDisableHost")) {
vnetConfig *a = va_arg(al, vnetConfig *);
char *b = va_arg(al, char *);
char *c = va_arg(al, char *);
int d = va_arg(al, int);
if (!a || (!b && !c) || d < 0 || d > NUMBER_OF_VLANS-1) {
fail=1;
}
} else if (!strcmp(func, "vnetDeleteChain") || !strcmp(func, "vnetCreateChain")) {
vnetConfig *a = va_arg(al, vnetConfig *);
char *b = va_arg(al, char *);
char *c = va_arg(al, char *);
if (!a || !b || !c) {
fail=1;
}
} else if (!strcmp(func, "vnetTableRule")) {
vnetConfig *a = va_arg(al, vnetConfig *);
char *b = va_arg(al, char *);
char *c = va_arg(al, char *);
char *d = va_arg(al, char *);
char *e = va_arg(al, char *);
char *f = va_arg(al, char *);
char *g = va_arg(al, char *);
if (!a || !b || !c || !d || (!e && !f && !g)) {
fail=1;
}
} else if (!strcmp(func, "vnetSetVlan")) {
vnetConfig *a = va_arg(al, vnetConfig *);
int b = va_arg(al, int);
char *c = va_arg(al, char *);
char *d = va_arg(al, char *);
if (!a || b < 0 || b >= NUMBER_OF_VLANS || !c || !d) {
fail=1;
}
} else if (!strcmp(func, "vnetDelVlan")) {
vnetConfig *a = va_arg(al, vnetConfig *);
int b = va_arg(al, int);
if (!a || b < 0 || b >= NUMBER_OF_VLANS) {
fail=1;
}
} else if (!strcmp(func, "vnetInit")) {
vnetConfig *a = va_arg(al, vnetConfig *);
char *b = va_arg(al, char *);
char *c = va_arg(al, char *);
char *d = va_arg(al, char *);
int e = va_arg(al, int);
if (!a || !b || !c || d<0) {
fail=1;
}
}
va_end(al);
if (fail) {
logprintfl (EUCAERROR, "INTERNAL ERROR: incorrect input parameters to function %s\n", func);
return(1);
}
return(0);
}
This is obvious 21.05.2010 17:23 # +3
absolut 21.05.2010 18:49 # 0
guest 21.05.2010 19:26 # 0
одни школоло на говнокоде
absolut 21.05.2010 19:32 # −2
This is obvious 21.05.2010 19:43 # +3
guest 21.05.2010 20:22 # −3
This is obvious 21.05.2010 21:59 # +3
guest 21.05.2010 22:02 # −4
This is obvious 21.05.2010 22:04 # 0
guest 21.05.2010 22:06 # −9
guest 21.05.2010 19:29 # −2
А вообще "..."(элипсис) всегда говнокод.
xXx_totalwar 21.05.2010 19:36 # 0
в большинстве случаев так и есть
я б не стал доверять прогеру, который не знает точное количество аргументов его собственной функции
absolut 21.05.2010 19:38 # +1
xXx_totalwar 21.05.2010 19:42 # +1
guest 21.05.2010 20:13 # 0
UncleAli 21.05.2010 20:49 # 0
guest 21.05.2010 22:03 # −3
Не более чем костыли, и то невсегда помогают.
UncleAli 21.05.2010 22:41 # 0
guest 21.05.2010 22:53 # −6
pushkoff 22.05.2010 19:35 # 0
давайте не будем сравнивать языки программирования с едой, так как они все таки больше похожи на религию...
xXx_totalwar 22.05.2010 19:57 # +1
упоминание всяких религий - лишь оправдание
невозможности выбрать.
язык это инструмент.
казалось бы инструмент устарел - выброси нах|й и без сожаления, но нет, лучше будем ныть и тянуть тонны легаси
guest 22.05.2010 20:45 # 0
guest 24.05.2010 13:50 # 0
xXx_totalwar 24.05.2010 13:54 # 0
guest 24.05.2010 14:56 # −1
pushkoff 24.05.2010 14:00 # 0
xXx_totalwar 24.05.2010 14:05 # −1
pushkoff 24.05.2010 21:52 # −1
guest 24.05.2010 22:25 # −7
guest 24.05.2010 14:56 # −2
UncleAli 21.05.2010 19:40 # +3
xXx_totalwar 21.05.2010 19:43 # 0
guest 21.05.2010 20:16 # −1
И вообще printf и sprintf - это любят всякие кулхацкеры, для обнаружения эксплоитов.
Отличная дыра в жопебезопасности.
guest 21.05.2010 20:19 # −3
guest 21.05.2010 20:21 # −3
guest 21.05.2010 20:33 # −2
guest 21.05.2010 20:36 # −1
Будто бы во время вывода на телетайп это мега важно.
guest 21.05.2010 20:40 # −3
guest 21.05.2010 20:41 # −3
UncleAli 21.05.2010 20:50 # +5
xXx_totalwar 21.05.2010 20:53 # +1
guest 21.05.2010 21:01 # 0
guest 21.05.2010 21:03 # −9
guest 21.05.2010 21:05 # −9
guest 21.05.2010 21:12 # −8
guest 21.05.2010 20:53 # −8
guest 21.05.2010 20:57 # −8
guest 21.05.2010 20:54 # −5
guest 21.05.2010 20:57 # −9
И давно вам, таки, кажется?
guest 21.05.2010 22:04 # −9
guest 22.05.2010 07:47 # −9
nil 23.05.2010 10:38 # 0
Хотя... иногда мне кажется, что их m.
PS. С максимой про троеточие не согласен. Если-таки их действительно разное число бывает, скажем, в одном вызове установить несколько разношерстных параметров объекта. Логика внутри похожая по большей части, что же, делать несколько функций, выносить одинаковую логику в какую-то подфункцию (писать на нее документацию, модульное тестирование и кучу всякой фигни)? Усложнение на пустом месте, я щитаю.
haskell 23.05.2010 10:45 # 0
nil 23.05.2010 11:05 # 0
absolut 23.05.2010 11:33 # −2
guest 23.05.2010 12:03 # 0
absolut 23.05.2010 12:08 # 0
guest 23.05.2010 12:32 # 0
А где головка? Сделай, что-бы это было типобезопасно. Напиши правильные макросы и функции, проверяющие типы долным образом.
В конце концов, если язык не подходит для решения данной задачи, то смени на более подходящий. Какие проблемы? Или других языков не знаешь, code monkey?
guest 23.05.2010 12:58 # +2
guest 23.05.2010 13:15 # 0
http://ru.wikipedia.org/wiki/Vala
И со всеми современными возможностями ФЯП.
guest 23.05.2010 15:35 # 0
>И со всеми современными возможностями ФЯП.
Далеко не со всеми. Vala - детская игрушка. Там где Си - осознанный выбор, действительно считают каждый байт.
guest 23.05.2010 13:16 # 0
Элипсис - вот это атас, так что ненадо.
absolut 23.05.2010 14:58 # −2
На тему смены языка можно говорить, когда проект создается с нуля. Если надо доводить до ума уже существующий - приходится ограничиваться исходным языком.
guest 23.05.2010 15:13 # 0
absolut 23.05.2010 22:59 # −2
guest 23.05.2010 23:43 # −1
guest 24.05.2010 08:45 # −1
Эта фича тебе нужна в твоём проекте. А ты сам отказался это реализовывать, тк ты обязьяна.
Тебе никто не обязан здесь ничего делать, а то я напишу, а ты получишь баблосы.
Лучше ты сиди и мучайся и ешь свой элипсисный кактус. Вылавливай трудновыловимые ошибки по всему проекту.
absolut 24.05.2010 09:16 # −1
kaktus 07.05.2015 22:22 # 0
Элипсисный — это какой?
guest 23.05.2010 16:58 # −1
guest 23.05.2010 12:04 # +1
Dummy00001 22.05.2010 19:49 # 0
больше похоже на тестовую функцию. нечто типа программного ассерт() для вызовов, которые например приходят по сети.
guest 22.05.2010 20:47 # −2
guest 23.05.2010 08:54 # −4
guest 23.05.2010 11:01 # −3
guest 23.05.2010 11:00 # −7
Я программист С++.
Я люблю есть кактус.
ОЛОЛО.
guest 23.05.2010 11:02 # −6
Я умею есть кактус.
А вам слабо?
ОЛОЛО
guest 23.05.2010 12:04 # −6
guest 23.05.2010 12:05 # −6
guest 23.05.2010 17:00 # 0
guest 24.05.2010 22:26 # −2
guest 24.05.2010 22:29 # −2
nil 24.05.2010 22:42 # −1
a<<8>>8<<8>>8<<8>>8<<8>>8?
guest 25.05.2010 10:46 # +1
ganzzz 24.08.2021 02:09 # 0