Changeset 58898d1d in mainline for uspace/app/sysinst/futil.c
- Timestamp:
- 2017-03-24T20:31:54Z (8 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 8e9b2534
- Parents:
- c9e3692
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/sysinst/futil.c
rc9e3692 r58898d1d 60 60 ssize_t nr, nw; 61 61 int rc; 62 aoff64_t posr = 0, posw = 0; 62 63 63 64 printf("Copy '%s' to '%s'.\n", srcp, destp); … … 72 73 73 74 do { 74 nr = read(sf, buf, BUF_SIZE);75 nr = read(sf, &posr, buf, BUF_SIZE); 75 76 if (nr == 0) 76 77 break; … … 78 79 return EIO; 79 80 80 nw = write(df, buf, nr);81 nw = write(df, &posw, buf, nr); 81 82 if (nw <= 0) 82 83 return EIO; … … 157 158 int sf; 158 159 ssize_t nr; 159 off64_t off;160 160 size_t fsize; 161 161 char *data; 162 struct stat st; 162 163 163 164 sf = open(srcp, O_RDONLY); … … 165 166 return ENOENT; 166 167 167 off = lseek(sf, 0, SEEK_END);168 if (off == (off64_t)-1)168 if (fstat(sf, &st) != EOK) { 169 close(sf); 169 170 return EIO; 171 } 170 172 171 fsize = (size_t)off; 172 173 off = lseek(sf, 0, SEEK_SET); 174 if (off == (off64_t)-1) 175 return EIO; 173 fsize = st.size; 176 174 177 175 data = calloc(fsize, 1); 178 if (data == NULL) 176 if (data == NULL) { 177 close(sf); 179 178 return ENOMEM; 179 } 180 180 181 nr = read(sf, data, fsize); 182 if (nr != (ssize_t)fsize) 181 nr = read(sf, (aoff64_t []) { 0 }, data, fsize); 182 if (nr != (ssize_t)fsize) { 183 close(sf); 184 free(data); 183 185 return EIO; 186 } 184 187 185 188 (void) close(sf);
Note:
See TracChangeset
for help on using the changeset viewer.