Add third way to get AFS syscallno.

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@649 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Johan Danielsson
1996-08-15 12:30:23 +00:00
parent 4125b5779f
commit 3dd53c94a2
2 changed files with 25 additions and 6 deletions

View File

@@ -336,7 +336,7 @@ k_afsklog(char *cell, char *krealm)
parms.in_size = t - buf; parms.in_size = t - buf;
parms.out = 0; parms.out = 0;
parms.out_size = 0; parms.out_size = 0;
(void) k_pioctl(0, VIOCSETTOK, &parms, 0); k_pioctl(0, VIOCSETTOK, &parms, 0);
} }
return k_errno; return k_errno;
} }
@@ -345,8 +345,9 @@ k_afsklog(char *cell, char *krealm)
#define SINGLE_ENTRY_POINT 1 #define SINGLE_ENTRY_POINT 1
#define MULTIPLE_ENTRY_POINT 2 #define MULTIPLE_ENTRY_POINT 2
#define SINGLE_ENTRY_POINT2 3 #define SINGLE_ENTRY_POINT2 3
#define AIX_ENTRY_POINTS 4 #define SINGLE_ENTRY_POINT3 4
#define UNKNOWN_ENTRY_POINT 5 #define AIX_ENTRY_POINTS 5
#define UNKNOWN_ENTRY_POINT 6
static int afs_entry_point = UNKNOWN_ENTRY_POINT; static int afs_entry_point = UNKNOWN_ENTRY_POINT;
int int
@@ -374,6 +375,12 @@ k_pioctl(char *a_path,
a_path, o_opcode, a_paramsP, a_followSymlinks); a_path, o_opcode, a_paramsP, a_followSymlinks);
#endif #endif
#ifdef AFS_SYSCALL3
if (afs_entry_point == SINGLE_ENTRY_POINT3)
return syscall(AFS_SYSCALL3, AFSCALL_PIOCTL,
a_path, o_opcode, a_paramsP, a_followSymlinks);
#endif
#ifdef _AIX #ifdef _AIX
if (afs_entry_point == AIX_ENTRY_POINTS) if (afs_entry_point == AIX_ENTRY_POINTS)
return Pioctl(a_path, o_opcode, a_paramsP, a_followSymlinks); return Pioctl(a_path, o_opcode, a_paramsP, a_followSymlinks);
@@ -507,6 +514,19 @@ k_hasafs(void)
} }
#endif /* AFS_SYSCALL */ #endif /* AFS_SYSCALL */
#ifdef AFS_SYSCALL3
if (setjmp(catch_SIGSYS) == 0)
{
syscall(AFS_SYSCALL3, AFSCALL_PIOCTL,
0, VIOCSETTOK, &parms, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
if (errno == EINVAL)
{
afs_entry_point = SINGLE_ENTRY_POINT3;
goto done;
}
}
#endif /* AFS_SYSCALL */
#ifdef _AIX #ifdef _AIX
aix_setup(); aix_setup();
if(Pioctl != NULL && Setpag != NULL){ if(Pioctl != NULL && Setpag != NULL){
@@ -517,7 +537,7 @@ k_hasafs(void)
done: done:
#ifdef SIGSYS #ifdef SIGSYS
(void) signal(SIGSYS, saved_func); signal(SIGSYS, saved_func);
#endif #endif
#endif /* NO_AFS */ #endif /* NO_AFS */
errno = saved_errno; errno = saved_errno;

View File

@@ -45,6 +45,5 @@
#endif #endif
#ifdef SYS_afs_syscall #ifdef SYS_afs_syscall
#undef AFS_SYSCALL #define AFS_SYSCALL3 SYS_afs_syscall
#define AFS_SYSCALL SYS_afs_syscall
#endif #endif