On 07/29/2011 01:36 AM, Dhaval Giani wrote:
> [Sorry for the delay with the reviews, been facing some issues with my laptop]
>
> On Sun, Jul 24, 2011 at 8:43 PM, Nikiforov Alex<[email protected]>
> wrote:
>> On 07/22/2011 06:11 PM, Michal Hocko wrote:
>>> On Fri 22-07-11 08:53:53, Nikiforov Alex wrote:
>>>> From f1390d329b1172bfc38b43bb11a56b8cb6db1af8 Mon Sep 17 00:00:00 2001
>>>> From: Alex Nikiforov<nika@gentoo>
>>>> Date: Thu, 21 Jul 2011 13:20:48 +0400
>>>> Subject: [PATCH 1/2] cgclassify: add a PID check into the client
>>>>
>>>> Add PID check code to the client. We dont need any read()/write() if
>>>> it's not valid.
>>>>
>>>> Signed-off-by: Alex Nikiforov<[email protected]>
>>>> ---
>>>> src/tools/cgclassify.c | 9 +++++++--
>>>> 1 files changed, 7 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/src/tools/cgclassify.c b/src/tools/cgclassify.c
>>>> index 397b725..cffc63f 100644
>>>> --- a/src/tools/cgclassify.c
>>>> +++ b/src/tools/cgclassify.c
>>>> @@ -121,7 +121,8 @@ int main(int argc, char *argv[])
>>>> struct cgroup_group_spec *cgroup_list[CG_HIER_MAX];
>>>> int c;
>>>> char *endptr;
>>>> -
>>>> + char path[FILENAME_MAX];
>>>> + struct stat buff_stat;
>>>>
>>>> if (argc< 2) {
>>>> usage(1, argv[0]);
>>>> @@ -167,8 +168,12 @@ int main(int argc, char *argv[])
>>>> }
>>>>
>>>> for (i = optind; i< argc; i++) {
>>>> +
>>>
>>> Why the empty line?
>> just dont like tons of code, I think it's very user full to separate
>> cycle head and the first operator. For me this style is more convenient
>> when I read a code (this is just IMHO)
>
> A lot of us are used to the kernel coding style, where we don't add
> these extra lines. So yes, no whitespace here.
>
Ok
>>>
>>>> pid = (uid_t) strtol(argv[i],&endptr, 10);
>>>> - if (endptr[0] != '\0') {
>>>> + snprintf(path, FILENAME_MAX, "/proc/%d", pid);
>>>> +
>>>> + /* check PID */
>>>> + if (endptr[0] != '\0' || stat(path,&buff_stat)) {
>
> Shouldn't this always evaluate as true? Considering that the only way
> we can enter this loop is on have endptr[0] != '\0'. IOW, why this
> condition?
>
No, look we check for the first char in endptr, according to manual this
case can occur only if strol() is fail, and if it's not fail (argv[i] is
a digit) we do stat() for real check (try to take information about
/proc/pid_folder).
>>>> /* the input argument was not a number */
>>>> fprintf(stderr, "Error: %s is not valid pid.\n",
>>>> argv[i]);
>>>
>>> I would prefer it like this:
>>> if (!(*endptr))
>>> goto bad_pid;
>>> snprintf(path, FILENAME_MAX, "/proc/%d", pid);
>>> if (stat(path,&buff_stat)) {
>>> bad_pid:
>>> fprintf(stderr, "Error: %s is not valid pid.\n",
>>> argv[i]);
>>>
>>> exit_code = 2;
>>> continue;
>>> }
>>>
>>> Why should we do snprintf if we know that the given parameter was not a
>>> number or it contains some garbage.
>> I really dont like exception style coding in plain C. It's hard to read
>> as well as hard to debug when you add some traces (this is IMHO too). We
>> can add goto, but it's really ugly style here not so much work happen to
>> add goto, snprint() is reenterant in this case it's fast. Dont see any
>> point to add goto here.
>>
>
> Please follow this style. We have been following it, and it is always
> better to have code in a uniform style.
>
Ok, I'll rewrire and send to you the new one patch after my small
vacation (just 1 week).
Thx
> Thanks!
> Dhaval
>
> ------------------------------------------------------------------------------
> Got Input? Slashdot Needs You.
> Take our quick survey online. Come on, we don't ask for help often.
> Plus, you'll get a chance to win $100 to spend on ThinkGeek.
> http://p.sf.net/sfu/slashdot-survey
------------------------------------------------------------------------------
Got Input? Slashdot Needs You.
Take our quick survey online. Come on, we don't ask for help often.
Plus, you'll get a chance to win $100 to spend on ThinkGeek.
http://p.sf.net/sfu/slashdot-survey
_______________________________________________
Libcg-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libcg-devel