-- int oldfd, newfd;
-- char oldfname[100], newfname[100];
-- char tmpstr[50];
-- char *buf, *ptr, *tmp;
-- struct stat sb;
-- mode_t mode;
--
-- if (on == -1) {
-- on = s.enabled ? 1 : 0;
-- }
-- snprintf(oldfname,100,"%s/%s",XINETDDIR,s.name);
-- if ( (oldfd = open(oldfname,O_RDONLY)) == -1 ) {
-- return -1;
-- }
-- fstat(oldfd,&sb);
-- buf = malloc(sb.st_size+1);
-- if (read(oldfd,buf,sb.st_size)!=sb.st_size) {
-- close(oldfd);
-- free(buf);
-- return -1;
-- }
-- close(oldfd);
-- buf[sb.st_size] = '\0';
-- snprintf(newfname,100,"%s/%s.XXXXXX",XINETDDIR,s.name);
-- mode = umask(S_IRWXG | S_IRWXO);
-- newfd = mkstemp(newfname);
-- umask(mode);
-- if (newfd == -1) {
-- free(buf);
-- return -1;
-- }
-- while (buf) {
-- tmp = buf;
-- ptr = strchr(buf,'\n');
-- if (ptr) {
-- *ptr = '\0';
-- ptr++;
-- }
-- while (isspace(*buf)) buf++;
-- if (strncmp(buf,"disable", 7) && strlen(buf)) {
-- write(newfd,tmp,strlen(tmp));
-- write(newfd,"\n",1);
-- if (buf[0] == '{') {
-- snprintf(tmpstr,50,"\tdisable\t= %s", on ? "no" : "yes");
-- write(newfd,tmpstr,strlen(tmpstr));
-- write(newfd,"\n",1);
-- }
-- }
-- buf = ptr;
-- }
-- close(newfd);
-- unlink(oldfname);
-- return(rename(newfname,oldfname));
+- int oldfd, newfd;
+- char oldfname[100], newfname[100];
+- char tmpstr[50];
+- char *buf, *ptr, *tmp;
+- struct stat sb;
+- mode_t mode;
+- int r;
+-
+- if (on == -1) {
+- on = s.enabled ? 1 : 0;
+- }
+- snprintf(oldfname, 100, "%s/%s", XINETDDIR, s.name);
+- if ((oldfd = open(oldfname, O_RDONLY)) == -1) {
+- return -1;
+- }
+- fstat(oldfd, &sb);
+- buf = malloc(sb.st_size + 1);
+- if (read(oldfd, buf, sb.st_size) != sb.st_size) {
+- close(oldfd);
+- free(buf);
+- return -1;
+- }
+- close(oldfd);
+- buf[sb.st_size] = '\0';
+- snprintf(newfname, 100, "%s/%s.XXXXXX", XINETDDIR, s.name);
+- mode = umask(S_IRWXG | S_IRWXO);
+- newfd = mkstemp(newfname);
+- umask(mode);
+- if (newfd == -1) {
+- free(buf);
+- return -1;
+- }
+- while (buf) {
+- tmp = buf;
+- ptr = strchr(buf, '\n');
+- if (ptr) {
+- *ptr = '\0';
+- ptr++;
+- }
+- while (isspace(*buf))
+- buf++;
+- if (strncmp(buf, "disable", 7) && strlen(buf)) {
+- write(newfd, tmp, strlen(tmp));
+- write(newfd, "\n", 1);
+- if (buf[0] == '{') {
+- snprintf(tmpstr, 50, "\tdisable\t= %s", on ? "no" : "yes");
+- write(newfd, tmpstr, strlen(tmpstr));
+- write(newfd, "\n", 1);
+- }
+- }
+- buf = ptr;
+- }
+- close(newfd);
+- unlink(oldfname);
+- r = rename(newfname, oldfname);
+- if (selinux_restore(oldfname) != 0)
+- fprintf(stderr, _("Unable to set SELinux context for %s: %s\n"),
+- oldfname, strerror(errno));
+- return (r);