home *** CD-ROM | disk | FTP | other *** search
- /* soft link routines */
-
- #include <mintbind.h>
- #include <errno.h>
- #include <string.h>
- #include <limits.h>
- #include "lib.h"
-
- extern int __mint;
-
- /*
- * If MiNT 0.9 or later is active, use the kernel routines for these;
- * otherwise, try to choose failure modes that applications will best be
- * able to handle
- */
-
- int
- symlink(old, new)
- char *old, *new;
- {
- char linkname[PATH_MAX];
- char path[PATH_MAX];
- long r;
-
- if (__mint >= 9) {
- _unx2dos(old, path);
- _unx2dos(new, linkname);
- r = Fsymlink(path, linkname);
- if (r) {
- errno = (int) -r;
- return -1;
- }
- return (int) r;
- }
- errno = EINVAL;
- return -1;
- }
-
- int
- readlink(unxname, buf, siz)
- char *unxname, *buf;
- int siz;
- {
- long r;
- char filename[PATH_MAX];
- char linkto[PATH_MAX+1];
-
- if (__mint < 9) {
- errno = EINVAL;
- return -1;
- }
- _unx2dos(unxname, filename);
- r = Freadlink(siz, linkto, filename);
- if (r < 0) {
- errno = (int) -r;
- return -1;
- }
- linkto[PATH_MAX] = 0;
- _dos2unx(linkto, buf);
- return (int) strlen(buf);
- }
-