66 lines
1.5 KiB
Plaintext
66 lines
1.5 KiB
Plaintext
' compile: fbc.exe -s console cdp.bas
|
|
|
|
Function CommonDirectoryPath Cdecl(count As Integer, ...) As String
|
|
Dim As String Path(), s
|
|
Dim As Integer i, j, k = 1
|
|
Dim arg As Any Ptr
|
|
Const PATH_SEPARATOR As String = "/"
|
|
|
|
arg = va_first()
|
|
ReDim Preserve Path(1 To count)
|
|
For i = 1 To count
|
|
Path(i) = *Va_Arg(arg, ZString Ptr)
|
|
Print Path(i)
|
|
arg = va_next(arg, ZString Ptr)
|
|
Next i
|
|
|
|
Do
|
|
For i = 1 To count
|
|
If i > 1 Then
|
|
If InStr(k, Path(i), PATH_SEPARATOR) <> j Then
|
|
Exit Do
|
|
ElseIf Left(Path(i), j) <> Left(Path(1), j) Then
|
|
Exit Do
|
|
End If
|
|
Else
|
|
j = InStr(k, Path(i), PATH_SEPARATOR)
|
|
If j = 0 Then
|
|
Exit Do
|
|
End If
|
|
End If
|
|
Next i
|
|
s = Left(Path(1), j + CLng(k <> 1))
|
|
k = j + 1
|
|
Loop
|
|
Return s
|
|
|
|
End Function
|
|
|
|
|
|
' testing the above function
|
|
|
|
Print CommonDirectoryPath( 3, _
|
|
"/home/user1/tmp/coverage/test", _
|
|
"/home/user1/tmp/covert/operator", _
|
|
"/home/user1/tmp/coven/members") & " <- common"
|
|
Print
|
|
|
|
Print CommonDirectoryPath( 4, _
|
|
"/home/user1/tmp/coverage/test", _
|
|
"/home/user1/tmp/covert/operator", _
|
|
"/home/user1/tmp/coven/members", _
|
|
"/home/user1/abc/coven/members") & " <- common"
|
|
Print
|
|
|
|
Print CommonDirectoryPath( 3, _
|
|
"/home/user1/tmp/coverage/test", _
|
|
"/hope/user1/tmp/covert/operator", _
|
|
"/home/user1/tmp/coven/members") & " <- common"
|
|
Print
|
|
|
|
' empty keyboard buffer
|
|
While Inkey <> "" : Wend
|
|
Print : Print "hit any key to end program"
|
|
Sleep
|
|
End
|