Remove copy of ioall.c - use the one from linux-utils
This commit is contained in:
parent
df7c431d0b
commit
92aac6a92e
@ -1,10 +1,10 @@
|
||||
CC=gcc
|
||||
CFLAGS=-g -Wall -I. -fPIC -pie
|
||||
all: vm-file-editor qopen-in-vm qfile-agent qfile-unpacker tar2qfile
|
||||
vm-file-editor: vm-file-editor.o ioall.o
|
||||
$(CC) -pie -g -o $@ $^
|
||||
qopen-in-vm: qopen-in-vm.o ioall.o gui-fatal.o
|
||||
$(CC) -pie -g -o $@ $^
|
||||
vm-file-editor: vm-file-editor.o
|
||||
$(CC) -pie -g -o $@ $^ -lqubes-rpc-filecopy
|
||||
qopen-in-vm: qopen-in-vm.o gui-fatal.o
|
||||
$(CC) -pie -g -o $@ $^ -lqubes-rpc-filecopy
|
||||
qfile-agent: qfile-agent.o gui-fatal.o qfile-utils.o
|
||||
$(CC) -pie -g -o $@ $^ -lqubes-rpc-filecopy
|
||||
qfile-unpacker: qfile-unpacker.o gui-fatal.o
|
||||
|
@ -1,116 +0,0 @@
|
||||
/*
|
||||
* The Qubes OS Project, http://www.qubes-os.org
|
||||
*
|
||||
* Copyright (C) 2010 Rafal Wojtczuk <rafal@invisiblethingslab.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
|
||||
void perror_wrapper(const char * msg)
|
||||
{
|
||||
int prev=errno;
|
||||
perror(msg);
|
||||
errno=prev;
|
||||
}
|
||||
|
||||
void set_nonblock(int fd)
|
||||
{
|
||||
int fl = fcntl(fd, F_GETFL, 0);
|
||||
if (fl & O_NONBLOCK)
|
||||
return;
|
||||
fcntl(fd, F_SETFL, fl | O_NONBLOCK);
|
||||
}
|
||||
|
||||
void set_block(int fd)
|
||||
{
|
||||
int fl = fcntl(fd, F_GETFL, 0);
|
||||
if (!(fl & O_NONBLOCK))
|
||||
return;
|
||||
fcntl(fd, F_SETFL, fl & ~O_NONBLOCK);
|
||||
}
|
||||
|
||||
int write_all(int fd, const void *buf, int size)
|
||||
{
|
||||
int written = 0;
|
||||
int ret;
|
||||
while (written < size) {
|
||||
ret = write(fd, (char *) buf + written, size - written);
|
||||
if (ret == -1 && errno == EINTR)
|
||||
continue;
|
||||
if (ret <= 0) {
|
||||
return 0;
|
||||
}
|
||||
written += ret;
|
||||
}
|
||||
// fprintf(stderr, "sent %d bytes\n", size);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int read_all(int fd, void *buf, int size)
|
||||
{
|
||||
int got_read = 0;
|
||||
int ret;
|
||||
while (got_read < size) {
|
||||
ret = read(fd, (char *) buf + got_read, size - got_read);
|
||||
if (ret == -1 && errno == EINTR)
|
||||
continue;
|
||||
if (ret == 0) {
|
||||
errno = 0;
|
||||
fprintf(stderr, "EOF\n");
|
||||
return 0;
|
||||
}
|
||||
if (ret < 0) {
|
||||
if (errno != EAGAIN)
|
||||
perror_wrapper("read");
|
||||
return 0;
|
||||
}
|
||||
if (got_read == 0) {
|
||||
// force blocking operation on further reads
|
||||
set_block(fd);
|
||||
}
|
||||
got_read += ret;
|
||||
}
|
||||
// fprintf(stderr, "read %d bytes\n", size);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int copy_fd_all(int fdout, int fdin)
|
||||
{
|
||||
int ret;
|
||||
char buf[4096];
|
||||
for (;;) {
|
||||
ret = read(fdin, buf, sizeof(buf));
|
||||
if (ret == -1 && errno == EINTR)
|
||||
continue;
|
||||
if (!ret)
|
||||
break;
|
||||
if (ret < 0) {
|
||||
perror_wrapper("read");
|
||||
return 0;
|
||||
}
|
||||
if (!write_all(fdout, buf, ret)) {
|
||||
perror_wrapper("write");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
int write_all(int fd, const void *buf, int size);
|
||||
int read_all(int fd, void *buf, int size);
|
||||
int copy_fd_all(int fdout, int fdin);
|
||||
void set_nonblock(int fd);
|
||||
void set_block(int fd);
|
@ -7,7 +7,7 @@
|
||||
#include <fcntl.h>
|
||||
#include <malloc.h>
|
||||
#include <stdlib.h>
|
||||
#include <ioall.h>
|
||||
#include <libqubes-rpc-filecopy.h>
|
||||
#include <unistd.h>
|
||||
#include <gui-fatal.h>
|
||||
#include "dvm2.h"
|
||||
|
@ -38,13 +38,13 @@
|
||||
|
||||
#define _GNU_SOURCE /* For O_NOFOLLOW. */
|
||||
#include <errno.h>
|
||||
#include <ioall.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/stat.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <libqubes-rpc-filecopy.h>
|
||||
#include <string.h>
|
||||
#include <qfile-utils.h>
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#include <ioall.h>
|
||||
#include <libqubes-rpc-filecopy.h>
|
||||
#include "dvm2.h"
|
||||
|
||||
#define USER_HOME "/home/user"
|
||||
@ -103,7 +103,7 @@ char *get_filename(void)
|
||||
return retname;
|
||||
}
|
||||
|
||||
void copy_file(const char *filename)
|
||||
void copy_file_by_name(const char *filename)
|
||||
{
|
||||
int fd = open(filename, O_WRONLY | O_CREAT | O_EXCL, 0600);
|
||||
if (fd < 0) {
|
||||
@ -138,7 +138,7 @@ main()
|
||||
FILE *env_file;
|
||||
FILE *waiter_pidfile;
|
||||
|
||||
copy_file(filename);
|
||||
copy_file_by_name(filename);
|
||||
if (stat(filename, &stat_pre)) {
|
||||
perror("stat pre");
|
||||
exit(1);
|
||||
|
Loading…
Reference in New Issue
Block a user