version 1.11, 2002/08/03 03:35:40 |
version 1.12, 2002/10/24 05:19:50 |
|
|
/* $OpenXM: OpenXM/src/kan96xx/Kan/ext.c,v 1.10 2002/07/28 02:48:16 takayama Exp $ */ |
/* $OpenXM: OpenXM/src/kan96xx/Kan/ext.c,v 1.11 2002/08/03 03:35:40 takayama Exp $ */ |
#include <stdio.h> |
#include <stdio.h> |
#include <sys/types.h> |
#include <sys/types.h> |
#include <sys/stat.h> |
#include <sys/stat.h> |
Line 299 struct object Kextension(struct object obj) |
|
Line 299 struct object Kextension(struct object obj) |
|
errorKan1("%s\n","The number must be 0, 1 or 2."); |
errorKan1("%s\n","The number must be 0, 1 or 2."); |
putUserDictionary2(obj2.lc.str,(obj2.rc.op->lc).ival,(obj2.rc.op->rc).ival, |
putUserDictionary2(obj2.lc.str,(obj2.rc.op->lc).ival,(obj2.rc.op->rc).ival, |
m,CurrentContextp->userDictionary); |
m,CurrentContextp->userDictionary); |
|
}else if (strcmp(key,"regionMatches")==0) { |
|
if (size != 3) errorKan1("%s\n","[(regionMatches) str strArray] extension."); |
|
obj1 = getoa(obj,1); |
|
if (obj1.tag != Sdollar) errorKan1("%s\n","[(regionMatches) str strArray] extension. str must be a string."); |
|
obj2 = getoa(obj,2); |
|
if (obj2.tag != Sarray) errorKan1("%s\n","[(regionMatches) str strArray] extension. strArray must be an array."); |
|
rob = KregionMatches(obj1,obj2); |
}else if (strcmp(key,"ostype")==0) { |
}else if (strcmp(key,"ostype")==0) { |
rob = newObjectArray(1); |
rob = newObjectArray(1); |
/* Hard encode the OS type. */ |
/* Hard encode the OS type. */ |
Line 315 struct object Kextension(struct object obj) |
|
Line 322 struct object Kextension(struct object obj) |
|
|
|
|
|
return(rob); |
return(rob); |
|
} |
|
|
|
struct object KregionMatches(struct object sobj, struct object keyArray) |
|
{ |
|
struct object rob; |
|
int n,i,j,m,keyn; |
|
char *s,*key; |
|
rob = newObjectArray(3); |
|
getoa(rob,0) = KpoInteger(-1); |
|
getoa(rob,1) = NullObject; |
|
getoa(rob,2) = NullObject; |
|
|
|
if (sobj.tag != Sdollar) return rob; |
|
if (keyArray.tag != Sarray) return rob; |
|
n = getoaSize(keyArray); |
|
for (i=0; i<n; i++) { |
|
if (getoa(keyArray,i).tag != Sdollar) { return rob; } |
|
} |
|
|
|
s = KopString(sobj); |
|
m = strlen(s); |
|
|
|
for (i=0; i<n; i++) { |
|
key = KopString(getoa(keyArray,i)); |
|
keyn = strlen(key); |
|
for (j=0; j<m; j++) { |
|
if (strncmp(&(s[j]),key,keyn) == 0) { |
|
getoa(rob,0) = KpoInteger(j); |
|
getoa(rob,1) = KpoString(key); |
|
getoa(rob,2) = KpoInteger(i); |
|
return rob; |
|
} |
|
} |
|
} |
|
return rob; |
} |
} |
|
|