ib_open.c 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /*
  2. * Copyright (c) 2003 Gunnar Ritter
  3. *
  4. * This software is provided 'as-is', without any express or implied
  5. * warranty. In no event will the authors be held liable for any damages
  6. * arising from the use of this software.
  7. *
  8. * Permission is granted to anyone to use this software for any purpose,
  9. * including commercial applications, and to alter it and redistribute
  10. * it freely, subject to the following restrictions:
  11. *
  12. * 1. The origin of this software must not be misrepresented; you must not
  13. * claim that you wrote the original software. If you use this software
  14. * in a product, an acknowledgment in the product documentation would be
  15. * appreciated but is not required.
  16. *
  17. * 2. Altered source versions must be plainly marked as such, and must not be
  18. * misrepresented as being the original software.
  19. *
  20. * 3. This notice may not be removed or altered from any source distribution.
  21. */
  22. /* Sccsid @(#)ib_open.c 1.2 (gritter) 4/17/03 */
  23. #include <sys/types.h>
  24. #include <sys/stat.h>
  25. #include <fcntl.h>
  26. #include <unistd.h>
  27. #include <string.h>
  28. #include <errno.h>
  29. #include <stdlib.h>
  30. #include "iblok.h"
  31. struct iblok *
  32. ib_open(const char *name, unsigned blksize)
  33. {
  34. struct iblok *ip;
  35. int fd, err;
  36. if ((fd = open(name, O_RDONLY)) < 0)
  37. return NULL;
  38. if ((ip = ib_alloc(fd, blksize)) == NULL) {
  39. err = errno;
  40. close(fd);
  41. errno = err;
  42. }
  43. return ip;
  44. }