elftc_copyfile.c (840e70929b3bc0bfdbccfd8d8626d6e2f29ddbcf) elftc_copyfile.c (cf781b2e16c26535788abe648f5917f4db09c123)
1/*-
2 * Copyright (c) 2011, Joseph Koshy
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 23 unchanged lines hidden (view full) ---

32
33#include "libelftc.h"
34#include "_libelftc.h"
35
36#if ELFTC_HAVE_MMAP
37#include <sys/mman.h>
38#endif
39
1/*-
2 * Copyright (c) 2011, Joseph Koshy
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 23 unchanged lines hidden (view full) ---

32
33#include "libelftc.h"
34#include "_libelftc.h"
35
36#if ELFTC_HAVE_MMAP
37#include <sys/mman.h>
38#endif
39
40ELFTC_VCSID("$Id: elftc_copyfile.c 2318 2011-12-11 10:54:27Z jkoshy $");
40ELFTC_VCSID("$Id: elftc_copyfile.c 2981 2014-02-01 02:41:13Z jkoshy $");
41
42/*
43 * Copy the contents referenced by 'ifd' to 'ofd'. Returns 0 on
44 * success and -1 on error.
45 */
46
47int
48elftc_copyfile(int ifd, int ofd)

--- 25 unchanged lines hidden (view full) ---

74 else
75 buf = NULL;
76#endif
77
78 /*
79 * If mmap() is not available, or if the mmap() operation
80 * failed, allocate a buffer, and read in input data.
81 */
41
42/*
43 * Copy the contents referenced by 'ifd' to 'ofd'. Returns 0 on
44 * success and -1 on error.
45 */
46
47int
48elftc_copyfile(int ifd, int ofd)

--- 25 unchanged lines hidden (view full) ---

74 else
75 buf = NULL;
76#endif
77
78 /*
79 * If mmap() is not available, or if the mmap() operation
80 * failed, allocate a buffer, and read in input data.
81 */
82 if (buf == NULL) {
82 if (buf_mmapped == false) {
83 if ((buf = malloc(sb.st_size)) == NULL)
84 return (-1);
83 if ((buf = malloc(sb.st_size)) == NULL)
84 return (-1);
85 if (read(ifd, buf, sb.st_size) != sb.st_size)
85 if (read(ifd, buf, sb.st_size) != sb.st_size) {
86 free(buf);
86 return (-1);
87 return (-1);
88 }
87 }
88
89 /*
90 * Write data to the output file descriptor.
91 */
92 for (n = sb.st_size, b = buf; n > 0; n -= nw, b += nw)
93 if ((nw = write(ofd, b, n)) <= 0)
94 break;

--- 13 unchanged lines hidden ---
89 }
90
91 /*
92 * Write data to the output file descriptor.
93 */
94 for (n = sb.st_size, b = buf; n > 0; n -= nw, b += nw)
95 if ((nw = write(ofd, b, n)) <= 0)
96 break;

--- 13 unchanged lines hidden ---