Fixed logical errors when closing opened files
This commit is contained in:
parent
f67ab1912a
commit
653f354b82
18
src/uniq.c
18
src/uniq.c
|
@ -30,18 +30,19 @@ static int _uniq(int opts, char const * fields, unsigned int skip,
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if(in != NULL && (infp = fopen(in, "r")) == NULL)
|
if(in != NULL && (infp = fopen(in, "r")) == NULL)
|
||||||
return _uniq_error(in, 2);
|
return _uniq_error(in, 1);
|
||||||
if(out != NULL && (outfp = fopen(out, "w")) == NULL)
|
if(out != NULL && (outfp = fopen(out, "w")) == NULL)
|
||||||
{
|
{
|
||||||
fclose(infp);
|
fclose(infp);
|
||||||
return _uniq_error(out, 2);
|
return _uniq_error(out, 1);
|
||||||
}
|
}
|
||||||
ret = _uniq_do(opts, fields, skip, infp, outfp);
|
ret = _uniq_do(opts, fields, skip, infp, outfp);
|
||||||
if(in == NULL)
|
if(in != NULL)
|
||||||
{
|
{
|
||||||
fclose(infp);
|
if(fclose(infp) != 0)
|
||||||
if(out == NULL)
|
ret = _uniq_error(in, 1);
|
||||||
fclose(outfp);
|
if(out != NULL && fclose(outfp) != 0)
|
||||||
|
return _uniq_error(out, 1);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -67,8 +68,7 @@ static int _uniq_do(int opts, char const * fields, unsigned int skip,
|
||||||
if((p = realloc(line, len + BUF + 1)) == NULL)
|
if((p = realloc(line, len + BUF + 1)) == NULL)
|
||||||
{
|
{
|
||||||
free(line);
|
free(line);
|
||||||
_uniq_error("malloc", 0);
|
return _uniq_error("malloc", 1);
|
||||||
return 2;
|
|
||||||
}
|
}
|
||||||
line = p;
|
line = p;
|
||||||
if(fgets(&line[len], BUF + 1, infp) == NULL)
|
if(fgets(&line[len], BUF + 1, infp) == NULL)
|
||||||
|
@ -190,5 +190,5 @@ int main(int argc, char * argv[])
|
||||||
else if(argc - optind > 2)
|
else if(argc - optind > 2)
|
||||||
return _usage();
|
return _usage();
|
||||||
}
|
}
|
||||||
return _uniq(opts, fields, skip, in, out);
|
return _uniq(opts, fields, skip, in, out) == 0 ? 0 : 2;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user