openbox lab initialized

This commit is contained in:
2025-11-06 00:01:42 +08:00
parent 0fe20bb24c
commit edb0725375
2508 changed files with 670396 additions and 66 deletions

View File

@ -1,11 +1,7 @@
#import "labtemplate.typ": *
#show: nudtlabpaper.with(title: "异构网络设计综合实验",
author1: "王李烜",
id1: "202202001046",
author2: "廖中煜",
id2: "202202001032",
author3: "王誉潞",
id3: "202202001051",
author1: "程景愉",
id1: "202302723005",
advisor: "张军",
jobtitle: "工程师",
lab: "306-707",
@ -42,7 +38,7 @@
// Display inline code in a small box
// that retains the correct baseline.
#show raw.where(block: false): it => box(
text(font: ("Consolas","FangSong_GB2312"), it),
text(font: ("Consolas","Noto Sans CJK SC"), it),
fill: luma(240),
inset: (x: 3pt, y: 0pt),
outset: (y: 3pt),
@ -52,7 +48,7 @@
// Display block code in a larger block
// with more padding.
#show raw.where(block: true): it => block(
text(font: ("Consolas","FangSong_GB2312"), it),
text(font: ("Consolas","Noto Sans CJK SC"), it),
fill: luma(240),
inset: 6pt,
radius: 3pt,
@ -63,9 +59,9 @@
#pagebreak()
= 实验目的与要求
#para[
+ 实验目的:通过本实验,让学员熟悉从网络规划到方案撰写,再到工程实施及测试验收的整个过程。
+ 实验任务:设计和实现一个包含局域网和广域网的中型网络。
#para[
一个完整的组网工程包括需求分析、方案设计、设备选型与采购、硬件安装与配置、软件安装与配置、系统测试与联调、工程验收等若干个环节,其中硬件与应用系统安装、配置工作量大,技术含量高,是信息系统集成或网络工程的关键环节,其中既涉及到技术上的问题,也涉及到工程组织、协调配合上的问题,一个网络工程师只有通过多次工程的实际锻炼,不断积累经验、吸取教训才能提高自己的水平。
]
= 需求分析
@ -172,12 +168,16 @@
=== 拓扑图
#para[
物理链路的拓扑图如@topo 所示(见下页):
]
#figure(image("实验拓扑.png",format: "png",fit:"stretch",width: 115%),caption: "实验拓扑图")<topo>
#para[
核心交换机有2台它们在物理上是横向而对等的关系。但由于使用了堆叠技术核心层的2台交换机在逻辑上是同一个设备。此外由于使用防火墙旁挂所以需要把核心交换机分成内外两个VPN示例。而这两个VPN实例在逻辑上可以视为2个设备故逻辑拓扑图由横向的2个设备变为了纵向的两个设备如下图所示。
]
#figure(image("逻辑拓扑.png",format: "png",fit:"stretch",width: 30%),caption: "逻辑拓扑图")<logic_topo>
#para[
接下来给出设备连接表(拓扑表):
]
#para[
// #para[
#set page(flipped: true)
#align(center)[#figure(caption: "核心交换机拓扑表")[#table(
columns: (auto, auto,auto,auto,auto,auto,auto,auto),
@ -275,10 +275,9 @@
[FW2], [g0/0/4], [FW1], [g0/0/4], [10.1.1.2/24], [7], [-], [用于组建防火墙旁挂系统],
[FW2], [g0/0/5], [FW1], [g0/0/5], [10.1.1.2/24], [7], [-], [用于组建防火墙旁挂系统],
)]]<firewall_topo>
]
// ]
= 实验设备
#para[
#align(center)[#table(
columns: (auto, auto,auto,auto),
rows:40pt,
@ -300,19 +299,19 @@
Windows 10 24H4", "1","DataServer、WebServer",
)]
另有网线、控制线若干。
]
= 实验步骤及结果
#para[]
== 设备连接
#para[
将所有设备按照拓扑图连接好,确保每个设备的接口都正确连接:
]
#figure(image("机柜正面接线图.jpg",format: "jpg",fit:"stretch",width: 60%),caption: "机柜正面接线图")<front>
#figure(image("机柜背面接线图.jpg",format: "jpg",fit:"stretch",width: 80%),caption: "机柜背面接线图")<back>
]
== 配置核心层堆叠系统基本功能
=== 组建堆叠系统
#para[
在此处配置开始之前必须明确本设备的逻辑堆叠端口stack-port 0/1对应的物理端口必须连接邻设备的逻辑堆叠端口stack-port 0/2对应的物理端口否则堆叠组建不成功。
]
+ 配置逻辑堆叠端口并加入物理成员端口。
- 配置LSW1的业务口g0/0/1、g0/0/7为物理成员端口并加入到相应的逻辑堆叠端口。
```
@ -378,12 +377,13 @@
1 Standby 642c-acc1-5970 100 S5735S-S24T4S-A
```
输出展示了堆叠的状态信息包括堆叠模式、堆叠拓扑类型、堆叠系统MAC地址、MAC切换延迟时间、堆叠保留VLAN、激活管理端口的槽位、各个槽位的角色、MAC地址、优先级和设备类型。其中槽位0的Priority为200槽位1的Priority为100在竞争中槽位0最终会成为Master角色槽位1为Standby角色。按照顺序上电能够保证设备快速进入事先规定好的角色。
#para[
配置完成后两台设备将组成一个堆叠系统逻辑上看成一个设备标号为CORE称为核心集群。在后续的配置中将以CORE作为设备名称。
]
=== 配置核心集群的Eth-Trunk功能和接口IP地址
#para[
此步骤是要将核心集群与其他设备相连的物理链路聚合起来,以提高链路的带宽和可靠性。
]
+ 创建 Eth-Trunk1用于连接 AR1并加入 Eth-Trunk 成员接口。
```
[CORE] interface Eth-Trunk 1
@ -456,10 +456,10 @@
[CORE-GigabitEthernet1/0/11] Eth-Trunk 6
[CORE-GigabitEthernet1/0/11] quit
```
]
=== 配置核心集群的VLAN功能
#para[
经过前面的配置核心集群上现在同时共存了2个VPN实例Private与Public。它们互相隔离表示内网与外网不能直接连通每个实例内又需要配置多个VLAN并在每个Eth接口上限制VLAN的出入借此来限制与不同用途的设备的连接。本步骤进行VLAN配置并为每个VLAN配置VLANIF接口的IP地址。
]
+ 创建 VLAN 并配置 VLANIF 接口。
```
[CORE] vlan batch 10 20 30 110 120 130
@ -585,10 +585,10 @@
130 enable default enable disable VLAN 0130
```
输出中的信息与上文配置办法无异说明各个VLAN#footnote[其中的VLAN 66是后来配置的此处可忽略。]配置生效。
]
== 配置接入层
#para[
接入层的配置比较简单,仅涉及到 VLAN。
]
+ 配置 LSW3
```plaintext
@ -655,10 +655,10 @@
[LSW5-GigabitEthernet0/0/4] port trunk allow-pass vlan 130
[LSW5-GigabitEthernet0/0/4] quit
```
]
== 配置出口网关的基本功能
#para[
出口网关即为AR1、AR2。在此步骤中首先配置路由器使用链路聚合接口核心交换机能够荣
]
+ AR1 上创建 Eth-Trunk2并加入成员接口。
```plaintext
[AR1] interface Eth-Trunk 2
@ -700,10 +700,10 @@
[AR2-Eth-Trunk2.100] dot1q termination vid 10
[AR2-Eth-Trunk2.100] quit
```
]
=== 配置防火墙的基本功能
#para[
在此步骤中首先配置防火墙使用链路聚合接口然后配置接口的IP地址最后根据接口划分安全区域。
]
+ FW1 上配置接口与安全区域。
```plaintext
[FW1] interface Eth-Trunk 3 // 配置与 CORE 连接的接口及 IP 地址(外侧)
@ -800,7 +800,6 @@
[FW2-zone-dmz] add interface Eth-Trunk 1 // 将 FW2 与 FW1 之间的接口加入 DMZ 区域
[FW2-zone-dmz] quit
```
]
== 配置使内部网络互联互通
#para[
此处内网指与核心集群相连的重要设备即AR1、AR2、FW1、FW2。在此步骤中需要配置核心集群与AR1、AR2的连接使得核心集群能够连接路由器其次还要配置核心集群上两个不互通的VPN实例与FW1、FW2的连接使得两个VPN实例可以通过旁挂防火墙互通。
@ -808,6 +807,7 @@
=== 在路由器上部署VRRP
#para[
在AR1、AR2上部署VRRP使得核心集群能够通过VRRP虚拟IP地址连接路由器。
]
- 配置AR1
```
[AR1] interface Eth-Trunk 2.100
@ -821,10 +821,10 @@
[AR2-Eth-Trunk2.100] vrrp vrid 1 virtual-ip 192.168.10.100 //配置VRRP的虚拟IP地址
[AR2-Eth-Trunk2.100] quit
```
]
=== 配置 AR1 和 AR2 的路由
#para[
+ AR1 上配置 OSPF。
]
```plaintext
[AR1] ospf 100 router-id 1.1.1.1
[AR1-ospf-100] area 0
@ -841,10 +841,8 @@
[AR2-ospf-100-area-0.0.0.0] quit
[AR2-ospf-100] quit
```
]
=== 配置防火墙的路由
#para[
+ FW1 上配置静态路由。
```plaintext
@ -862,10 +860,10 @@
[FW2] ip route-static 192.168.120.0 255.255.255.0 192.168.30.1 // 对于下行流量,目的地址为 VLAN120 网络,下一跳为 CORE 的 Private 接口 VLANIF30 的 IP 地址
[FW2] ip route-static 192.168.130.0 255.255.255.0 192.168.30.1 // 对于下行流量,目的地址为 VLAN130 网络,下一跳为 CORE 的 Private 接口 VLANIF30 的 IP 地址
```
]
=== 配置核心集群的路由
#para[
核心集群上路由配置比较复杂涉及到两个VPN实例分别是Public和Private。Public用于连接路由器Private用于连接防火墙。在此步骤中需要配置核心集群上的路由使得核心集群能够连接路由器和防火墙。配置时需要仔细对照网络拓扑表确保路由配置正确。
]
+ CORE 上创建 VPN 实例 Public将连接路由器的接口和连接防火墙上行口的接口绑定到 Public。
```plaintext
[CORE] ip vpn-instance Public // 创建 Public
@ -943,16 +941,16 @@
```plaintext
[CORE] ip route-static vpn-instance Private 0.0.0.0 0.0.0.0 192.168.30.2 // 缺省路由下一跳指向 FW1 的下行接口
```
]
== 阶段性检验
#para[
上面的配置完成后进行一个阶段性检验。配置PC1的IP地址为`192.168.110.10/24`网关为核心集群上VPN实例Private内的Vlanif110接口地址`192.168.110.1`然后ping AR1、AR2的VRRP虚拟IP地址`192.168.10.100`,是可以通的,如图@check_point1。如果不能则逐级ping查找问题所在。
#figure(image("阶段性检验1.jpg",format:"jpg",fit:"stretch",width: 100%),caption:"阶段性检验1")<check_point1>
]
#figure(image("阶段性检验1.jpg",format:"jpg",fit:"stretch",width: 100%),caption:"阶段性检验1")<check_point1>
== 配置其他功能
=== 配置出口网关的BFD功能
#para[
配置 AR1 AR2 之间的 BFD 功能,用于快速检测链路故障并触发 OSPF 路由收敛。
]
+ 配置全局 BFD 功能。
```plaintext
@ -1007,10 +1005,10 @@
RemoteIpAdd:192.168.10.2 Diagnostic Info:No diagnostic information
```
注意其中的`BFDStat`字段,显示为`up`,表示 BFD 会话建立成功。
]
=== 配置防火墙的双机热备
#para[
在防火墙上配置双机热备功能主备备份模式确保高可用性。FW1 作为 MasterFW2 作为 Slave。
]
+ FW1 上配置双机热备FW1 在备份组中作为 Master。
```plaintext
@ -1038,11 +1036,10 @@
配置好之后保存配置将两台设备全部断电关机。按照FW1先、FW2后的顺序开机防火墙开机较久约5分钟可通过风扇声音判断声音突然由大变小表示开机完成应该可以观察到防火墙Web主页中的主备状态
#figure(image("主备备份(主).png",format:"png",fit:"stretch",width: 80%),caption:"防火墙双机热备FW1")<FW1_hr>
#figure(image("主备备份(备).png",format:"png",fit:"stretch",width: 80%),caption:"防火墙双机热备FW2")<FW2_hr>
]
=== 配置DHCP服务器
#para[
DHCP服务器一般配置在接入层上但本实验拓扑图较为简单所以在核心集群上配置DHCP服务器 VLANIF110 VLANIF120 接口下的客户端分配 IP 地址和相关网络参数。
]
+ 配置 VLANIF110 接口的 DHCP 地址池
- 配置 VLANIF110 接口下的客户端从接口地址池中获取 IP 地址和相关网络参数。
```plaintext
@ -1063,8 +1060,9 @@
[CORE-Vlanif120] dhcp server dns-list 192.168.130.10
[CORE-Vlanif120] quit
```
#para[
配置完成之后配置PC1、PC2为自动获取IP地址的方式还可配置自动获取DNS地址查看 DHCP 地址池信息:
]
- 使用 `display ip pool` 命令查看 DHCP 地址池的配置和状态。
```plaintext
@ -1086,12 +1084,14 @@
```
注意到`Used`字段中变成2。此时在任一台机器上查看IP地址和DNS地址可以看到被分配的地址
#figure#figure(image("dhcp_dns.jpg",format:"jpg",fit:"stretch",width: 100%),caption:"PC1自动获取IP地址和DNS服务器地址")<dhcp_dns>
]
=== 配置STP以消除网络中的环路
#para[
逻辑拓扑图@logic_topo 有更完整的版本:
]
#figure(image("无环路.png",format:"png",fit:"stretch",width: 60%),caption:"逻辑拓扑图(完整)")<no_halo>
#para[
分析逻辑拓扑图发现此网络基本呈树形有且仅有核心集群与FW1、FW2之间组成的环。因此只需要在核心集群、防火墙上配置 STP就可以消除网络中的环路不需要RSTP、MSTP等较复杂的协议。具体来说以阻塞 FW2 连接Private的端口Eth4为目的配置STP协议。
]
+ CORE 上启用 STP 并配置优先级。
```plaintext
[CORE] stp enable // 启用 STP 协议
@ -1122,10 +1122,10 @@
[FW2-Eth-Trunk4] stp disable // 禁用 STP 以阻塞 Eth4 端口
[FW2-Eth-Trunk4] quit
```
]
=== 为出口网关配置NAT
#para[
由于内网用户有上网需求,所以需要进行地址转换。这一步骤在 AR1 AR2 上配置 NAT 功能包括地址池、ACL、静态映射以及 FTP ALG 功能。
]
+ 配置地址池和 ACL
- AR1 上配置地址池:
```plaintext
@ -1197,15 +1197,15 @@
结果如@ar1nat @ar2nat 所示(见下页):
#figure(image("AR1-NAT配置结果-截图.jpg",format:"jpg",fit:"stretch",width: 80%),caption:"AR1 NAT配置结果")<ar1nat>
#figure(image("AR1-NAT配置结果-截图.jpg",format:"jpg",fit:"stretch",width: 80%),caption:"AR1 NAT配置结果")<ar2nat>
]
=== 防火墙的工作时间段切换
#para[
公司规定员工办公室工作时间内不能访问外网。因此,需要在防火墙上配置对应的安全策略,即工作时间段内`trust`不能访问`untrust`区域,策略配置如下:
#figure(image("do_not_play_policy.png",format:"png",fit:"stretch",width: 90%),caption:"配置非工作时间段内不能访问外网")<do_not_play>
]
#figure(image("do_not_play_policy.png",format:"png",fit:"stretch",width: 90%),caption:"配置非工作时间段内不能访问外网")<do_not_play>
=== 配置端口安全
#para[
LSW4 上为连接到 Boss 设备的接口配置端口安全,以确保只有特定的 MAC 地址可以访问该端口。
]
+ 进入连接到 Boss 设备的接口配置模式。
```plaintext
[LSW4] interface GigabitEthernet0/0/2
@ -1223,9 +1223,7 @@
```plaintext
[LSW4-GigabitEthernet0/0/2] port-security max-mac-num 1
```
]
]
=== 配置Web服务器与DNS服务器
#para[
在个人笔记本电脑上配置服务器。选择Apache24作为Web服务器选择BIND 9作为DNS服务器。Apache的配置十分简单而BIND的具体配置十分复杂不是重点在此不再展开。
@ -1233,13 +1231,15 @@
=== 配置无线路由器
#para[
初始化AP然后以无线网络连接到它的配置界面`tplogin.cn`TP-Link AX3000。随后选择桥接模式即可。
]
#para[
理论成立但实际不可行。经测试此AP在选取桥接模式后也无法真正地担任交换机的功能两个连接同网段设备的端口间互ping不通。推测在工程环境下只能作为路由器使用。而拓扑图中已经没有多余的路由器位置。即使有也不具有适合此AP的功能性。所以不再继续配置此AP。
]
== 实验后验收
#para[
检查以下项目来验证整个网络的功能:
]
+ 内网主机能够通过DHCP获取到IP地址#box(
text(font: ("Times LT Pro","FZXiaoBiaoSong-B05"),fill: luma(240), weight:"bold", "先前已验证"),
fill:green,
@ -1256,7 +1256,7 @@
+ 内网主机可以访问外网;
+ 检验防火墙安全策略;
+ 防火墙主备备份;#box(
text(font: ("Times LT Pro","FZXiaoBiaoSong-B05"),fill: luma(240), weight:"bold", "先前已验证"),
text(font: ("Times New Roman","Noto Sans CJK SC"),fill: luma(240), weight:"bold", "先前已验证"),
fill:green,
inset: (x: 3pt, y: 0pt),
outset: (y: 3pt),
@ -1264,13 +1264,12 @@
+ 检验出口网关双机热备份/BFD快速切换
+ 检验端口安全;
其中,第一项与第八项先前已经验证生效,后续不再专门验收。
]
=== 内网通信
#para[
检查内网主机之间是否可以互相ping通。这里以PC1和Boss、PC2和Asso通信为例
]
#figure(image("2.PC1-ping老板.jpg",format: "jpg",width: 50%,fit:"stretch"),caption:"PC1 ping 通 Boss")
#figure(image("3.PC2-ping-Asso.jpg",format: "jpg",width: 50%,fit:"stretch"),caption:"PC2 ping 通 Asso")
]
=== 内网访问Web服务器
#para[
使用主机Asso经由IP地址192.168.130.10访问Web服务器

View File

@ -1,18 +1,14 @@
#let times = "Times LT Pro"
#let times = "Times New Roman"
#let song = (times, "FZShuSong-Z01")
#let hei = (times, "FZHei-B01")
#let kai = (times, "FZKai-Z03")
#let xbsong = (times, "FZXiaoBiaoSong-B05")
#let fsong = (times, "FangSong_GB2312")
#let code = (times, "DejaVu Sans Mono")
#let song = (times, "Noto Serif CJK SC")
#let hei = (times, "Noto Sans CJK SC")
#let kai = (times, "Noto Serif CJK SC")
#let xbsong = (times, "Noto Serif CJK SC")
#let fsong = (times, "Noto Serif CJK SC")
#let code = (times, "JetBrains Mono")
#let nudtlabpaper(title: "",
author1: "",
id1: "",
author2: "",
id2: "",
author3: "",
id3: "",
advisor: "",
jobtitle: "",
lab: "",
@ -66,22 +62,6 @@
line(length: 100%),
text(""),
line(length: 100%),
text(size: 14pt, font: song, tracking: 9pt, "学员姓名"),
align(center, text(size: 14pt, font: song, author2)),
text(size: 14pt, font: song, tracking: 54pt, "学号"),
align(center, text(size: 14pt, font: times, id2)),
text(""),
line(length: 100%),
text(""),
line(length: 100%),
text(size: 14pt, font: song, tracking: 9pt, "学员姓名"),
align(center, text(size: 14pt, font: song, author3)),
text(size: 14pt, font: song, tracking: 54pt, "学号"),
align(center, text(size: 14pt, font: times, id3)),
text(""),
line(length: 100%),
text(""),
line(length: 100%),
text(size: 14pt, font: song, tracking: 9pt, "指导教员"),
align(center, text(size: 14pt, font: song, advisor)),
text(size: 14pt, font: song, tracking: 54pt, "职称"),

BIN
case.tgz Normal file

Binary file not shown.

8
openflow/Makefile Normal file
View File

@ -0,0 +1,8 @@
CC=gcc
LDLIBS = -lofp -lrule -lua -lreg -lpcap -lnet -lpthread
user_openflow:main_user_openflow.c
$(CC) -o user_openflow main_user_openflow.c $(LDLIBS)
clean:
rm -rf user_openflow *.o

24
openflow/README.txt Normal file
View File

@ -0,0 +1,24 @@
实现内容:
协议编号 - 协议类型 - 子协议类型 - 描述
1 - OFPT_FEATURES_REQUEST=5 - 无 - 获取交换机支持多少流表
2 - OFPT_GET_CONFIG_REQUEST=7 - 无 - 查询交换机配置
3 - OFPT_MULTIPART_REQUEST=18 - OFPMP_DESC=0 - 获取交换机版本信息,制造商家等信息
4 - OFPT_MULTIPART_REQUEST=18 - OFPMP_FLOW=1 - 获取交换机流表信息
5 - OFPT_MULTIPART_REQUEST=18 - OFPMP_AGGREGATE=2 - 获取交换机总流量统计
6 - OFPT_MULTIPART_REQUEST=18 - OFPMP_TABLE=3 - 获取交换机流统计表,动作,时间等
7 - OFPT_MULTIPART_REQUEST=18 - OFPMP_PORT_STATS=4 - 获取交换机端口计数统计
8 - OFPT_MULTIPART_REQUEST=18 - OFPMP_GROUP_FEATURES=8 - 获取交换机组特征
9 - OFPT_MULTIPART_REQUEST=18 - OFPMP_PORT_DESC=13 - 获取交换机端口信息
10 - OFPT_PACKET_OUT=13 - 无 - 处理控制器报文根据action动作输出
11 - OFPT_FLOW=14 - ADD=0 - 添加交换机流表规则
12 - OFPT_ROLE_REQUEST=24 - 无 - 配置交换机角色
openflow数据结构: ofp_v4.h
流表规则数据结构路径: fast_struct.h
OUTPUT调用发送函数: void nms_exec_action(u32 inport,u32 outport,struct eth_header *eth,int len,int hit_idx)/*最后参数-1表示未携带查表命中信息,此处仅做发送*/ inport 接收端口号 outport 输出端口号 eth 以太网报文 len 报文长度 hit_idx 命中消息类型
Flow_add调用添加函数: 新增一条规则,要求用户输入完整的规则数据结构,包括规则字段,掩码和相应动作,返回值为存储当前规则的索引值 int fast_add_rule(struct fast_rule *rule)

113
openflow/fast.h Normal file
View File

@ -0,0 +1,113 @@
/** *************************************************************************
* @file fast.h
* @brief FAST架构平台所有相关头文件定义
*
* 此头文件包含了其他FAST相关的所有定义文件如虚拟地址空间定义、数据类型定义
* 数据结构定义、枚举类型定义和错误信息定义
*
* @date 2017/01/05 12:14:24 星期四
* @author XDL(Copyright 2017 XuDongLai)
* @email <XuDongLai0923@163.com>
* @version 0.2.0
****************************************************************************/
/*
* fast.h
*
* Copyright (C) 2017 - XuDongLai
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __FAST_H__
#define __FAST_H__
#include <stdio.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
#include <endian.h>
#include <signal.h>
#include <memory.h>
#include <pthread.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/time.h>
#include <sys/socket.h>
#include <linux/if_ether.h>
#include <linux/netlink.h>
#include <netinet/in.h> /*IPv6 addr*/
#include <sys/file.h>
#include <sys/mman.h>
/** 是否启动软件调试模式,不启用对硬件操作,对硬件寄存器读写进行屏蔽,仅做打印输出 */
#define XDL_DEBUG 1 /**< 启用软件调试模式 */
#undef XDL_DEBUG /**< 不启用软件调试模式 */
/** 硬件平台使用ZYNQ系列的定义20180601开始使用*/
#define OPENBOX_S4 1 /**< 硬件平台使用ZYNQ平台 */
//#undef OPENBOX_S4 /**< 硬件平台不使用ZYNQ平台 */
/** 硬件平台使用OpenBox-S28系列的定义20180601开始使用*/
#define OPENBOX_S28 1 /**< 硬件平台使用ZYNQ平台 */
#undef OPENBOX_S28 /**< 硬件平台不使用ZYNQ平台 */
/*FAST架构数据结构版本号1.0*/
#define FAST_10 1
#undef FAST_10
/*FAST架构数据结构版本号2.0*/
#define FAST_20 1
//#undef FAST_20
#define FAST_XOFP_UA_MODE 1 /*OpenFlow交换机采用FAST的UA架构方式运行*/
#undef FAST_XOFP_UA_MODE
/** 硬件查表模式是否使用BV查表默认为顺序匹配查表 */
#define LOOKUP_BV 1 /**< 硬件查表使用BV */
#undef LOOKUP_BV /**< 硬件查表不使用BV */
#include "fast_type.h"
#include "fast_struct.h"
#include "fast_err.h"
#include "fast_vaddr.h"
#include "fast_version.h"
#include "fast_sys_dev.h"
/*---------------REG------------------*/
u64 fast_reg_rd(u64 regaddr);/** 读硬件64位寄存器*/
void fast_reg_wr(u64 regaddr,u64 regvalue);/** 写硬件64位寄存器*/
/*---------------UA------------------*/
int fast_ua_init(int mid,fast_ua_recv_callback callback);/** UA模块初始化*/
void fast_ua_destroy(void);/** UA模块注销(销毁)*/
int fast_ua_send(struct fast_packet *pkt,int pkt_len);/** UA发送报文功能函数*/
void fast_ua_recv();/** UA启动报文接收线程(接收到报文后,回调用户注册函数)*/
void fast_ua_hw_wr(u8 dmid,u32 addr,u32 value,u32 mask);
u32 fast_ua_hw_rd(u8 dmid,u32 addr,u32 mask);
/*--------------DEBUG----------------*/
#ifdef FAST_KERNEL
#define PFX "fastK->"
#define EPFX "KERR-fast->"
#define FAST_DBG(args...) printk(PFX args)
#define FAST_ERR(args...) printk(EPFX args)
#else
#define PFX "fastU->"
#define EPFX "UERR-fast->"
#define FAST_DBG(args...) do{printf(PFX);printf(args);}while(0)
#define FAST_ERR(args...) do{printf(EPFX);printf(args);exit(0);}while(0)
#endif
#endif//__FAST_H__

39
openflow/fast_err.h Normal file
View File

@ -0,0 +1,39 @@
/** *************************************************************************
* @file fast_err.h
* @brief FAST平台的错误类型值定义
*
* @date 2017/01/05 12:08:38 星期四
* @author XDL(Copyright 2017 XuDongLai)
* @email <XuDongLai0923@163.com>
* @version 0.2.0
****************************************************************************/
/*
* fast_err.h
*
* Copyright (C) 2017 - XuDongLai
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __FAST_ERR_H__
#define __FAST_ERR_H__
/** 规则索引溢出错误 */
#define E_RULE_INDEX_OVERFLOW 1
/** UA创建NetLink SOCKET时出错 */
#define E_UA_NLSK_CREATE 2
/** UA绑定NetLink SOCKET时出错 */
#define E_UA_NLSK_BIND 3
/** UA注册时出错 */
#define E_UA_NLSK_REG_ERR 4
#endif//__FAST_ERR_H__

500
openflow/fast_struct.h Normal file
View File

@ -0,0 +1,500 @@
/** *************************************************************************
* @file fast_struct.h
* @brief FAST平台的数据类型结构定义
*
* FAST平台主要的数据结构类型主要包括枚举的消息类型、动作类型报文数据结构、
* 流表数据结构;回调函数类型等。
*
* @date 2017/04/09 12:25:57 星期日
* @author XDL(Copyright 2017 XuDongLai)
* @email <XuDongLai0923@163.com>
* @version 0.2.0
****************************************************************************/
/*
* fast_struct.h
*
* Copyright (C) 2017 - XuDongLai
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __FAST_STRUCT_H__
#define __FAST_STRUCT_H__
#pragma pack(1)
/*-------------------------NetMagic 08----------------------------------*/
/**
* @brief NetMagic08的访问控制NMAC报文的报文类型枚举定义
* 该枚举类型主要包括软件与NetMagic08之间的NMAC通信报
* 文的所有类型
*/
typedef enum{
NM_CONN = 1, /**< NMAC的连接报文*/
NM_RELESE, /**< NMAC的释放关闭报文*/
NM_REG_RD, /**< NMAC的读请求报文*/
NM_REG_WR, /**< NMAC的写操作报文*/
NM_RD_RPL, /**< NMAC的读回应报文*/
NM_WR_RPL, /**< NMAC的写回应报文*/
}NMAC_TYPE;
/**
* @brief NetMagic08访问控制NMAC报文的头部结构定义
*/
struct nm_head
{
u8 count; /**< @brief NMAC报文头的计数值表示后面的读写操作包含多少个*/
u8 reserve8_A; /**< @brief 暂时保留不用*/
u16 seq; /**< @brief NMAC报文头的序号每发一个报文计数加1*/
u16 reserve16_B; /**< @brief 报文计数值*/
u8 type; /**< @brief NMAC报文头的类型@see ::NMAC_TYPE*/
u8 parameter_1; /**< @brief 报文计数值1*/
u8 parameter_2; /**< @brief 报文计数值2*/
u8 reserve8_C; /**< @brief 报文计数值*/
};
/**
* @brief NMAC报文的完整定义
*
* NMAC报文由NMAC头、寄存器地址和寄存器值三部分组成。
*/
struct nm_packet
{
struct nm_head nm; /**< @brief NMAC报文头*/
u64 regaddr; /**< @brief 读或写的寄存器地址*/
u64 regvalue; /**< @brief 读回或写入的寄存器地址对应的值*/
};
/*-------------------------NetMagic 08----------------------------------*/
/*-------------------------UA----------------------------------*/
//UA
/**
* @brief UA注册的NetLink消息类型
*/
#define FAST_UA_NETLINK 23
/**
* @brief UA注册的NetLink消息长度
*/
#define FAST_UA_REG_LEN 32
/**
* @brief UA通信的NetLink消息最大长度
*/
#define FAST_UA_PKT_MAX_LEN 2048
/**
* @brief 支持UA注册的最大个数
*/
#define UA_MAX_MID_CNT 256
/**
* @brief UA模块与内核交互消息定义
* 消息内型主要包括:注册、注销等类型
*/
typedef enum {
UA_REG = 21, /**< UA注册*/
UA_UNREG = 32, /**< UA注销*/
UA_OK = 26, /**< UA操作成功*/
UA_ERR = 37 /**< UA操作失败*/
}UA_STATE;
/*-------------------------UA----------------------------------*/
/**
* @brief FAST平台硬件的ACTION动作类型枚举定义
* 类型定义主要包括:硬件丢弃、设置报文进程号(队列号/端口号)、
* 轮循分派到各个进程队列端口、硬件端口输出、设置报文目的模块ID、
* 设置RTP报文队列等
*/
typedef enum{
ACTION_DROP = 0, /**< 报文在硬件,由FPGA处理丢弃报文*/
ACTION_SET_PID = 1, /**< 报文送软件,由CPU处理设置报文的处理线程ID号(处理线程数则驱动模块参数决定,默认从0开始,不能超过线程最大值)*/
ACTION_POLL = 2, /**< 报文送软件,由CPU处理将报文循环分派到处理线程(处理线程数则驱动模块参数决定,在指定线程数内循环派送)*/
ACTION_PORT = 3, /**< 报文在硬件,由FPGA处理从指定硬件物理端口输出报文*/
ACTION_SET_MID = 4, /**< 报文送软件,由CPU处理设置报文分派的模块ID号*/
ACTION_SET_QUEUE_RTP = 5,/**< 支持传媒RTP视频流的队列调度*/
ACTION_REPLACE_PROTO = 6,/**< 支持协议替换操作*/
ACTION_KEEP_RESOURCE = 7,/**< 支持流在端口转发时的资源预留*/
}ACTION;
/*-----------------------------------流表相关----------------------------------------------*/
/**
* @brief FAST平台硬件流表中流的格式定义
*/
struct fast_flow /*2017/06/01开始启用支持IPv6*/
{
u8 dmac[ETH_ALEN]; /**< @brief Ethernet source address. */
u8 smac[ETH_ALEN]; /**< @brief Ethernet destination address. */
u16 tci; /**< @brief 0 if no VLAN, VLAN_TAG_PRESENT set otherwise. */
u16 type; /**< @brief Ethernet frame type. */
//eth-16;
u8 proto; /**< @brief IP protocol or lower 8 bits of ARP opcode. */
u8 tos; /**< @brief IP ToS. */
u8 ttl; /**< @brief IP TTL/hop limit. */
u8 port:6, /**< @brief Input Port*/
frag:2; /**< @brief One of OVS_FRAG_TYPE_*. */
//ip=16+4;
union {
struct {
u32 src; /**< @brief IP source address. */
u32 dst; /**< @brief IP destination address. */
//addr;
union {
struct {
u16 sport; /**< @brief TCP/UDP/SCTP source port. */
u16 dport; /**< @brief TCP/UDP/SCTP destination port. */
u16 flags; /**< @brief TCP flags. */
} tp; /**< @brief IPv4的传输层端口与标志信息*/
struct {
u8 sha[ETH_ALEN]; /**< @brief ARP source hardware address. */
u8 tha[ETH_ALEN]; /**< @brief ARP target hardware address. */
} arp; /**< @brief ARP的MAC地址信息*/
}; /**< @brief IPv4传输层信息与ARP信息共用体二者互斥存在*/
} ipv4; /**< @brief IPv4协议相关字段*/
struct {
struct in6_addr src; /**< @brief IPv6 source address. */
struct in6_addr dst; /**< @brief IPv6 destination address. */
//addr;
u32 label; /**< @brief IPv6 flow label. */
union {
struct {
u16 sport; /**< @brief TCP/UDP/SCTP source port. */
u16 dport; /**< @brief TCP/UDP/SCTP destination port. */
u16 flags; /**< @brief TCP flags. */
} tp; /**< @brief IPv6的传输层端口与标志信息*/
/*512位宽表项不够暂不使用ND协议中的targetIP!!!为方便以后扩展,将其移至末尾*/
#if 0
struct {
u8 sll[ETH_ALEN]; /**< @brief ND source link layer address. */
u8 tll[ETH_ALEN]; /**< @brief ND target link layer address. */
struct in6_xaddr target; /**< @brief ND target address. */
} nd;
#endif
}; /**< @brief IPv6传输层信息与ND信息共用体二者互斥存在*/
u16 nil;
} ipv6; /**< @brief IPv6协议相关字段*/
};
};
#if 0
struct flow_old /*2017/06/01之前版本使用硬件仅支持OF1.0不支持IPv6等*/
{
u8 dmac[6]; /* Ethernet destination address. */
u8 smac[6]; /* Ethernet source address. */
u32 tag; /* 北邮使用的TAG字段4个字节. */
/*16B,128b*/
u16 type; /* Ethernet frame type. */
u8 tos; /* IP ToS (actually DSCP field, 6 bits). */
u8 proto; /* IP protocol or lower 8 bits of ARP opcode. */
u32 src; /* IP source address. */
u32 dst; /* IP destination address. */
u16 sport; /* TCP/UDP source port. */
u16 dport; /* TCP/UDP destination port. */
/*32B,256b*/
u16 port; /* Input switch port. */
/*34B,272b*/
u8 pad[6];/*ADD align:2017/02/28 15:26 ADD*/
u64 cookie;/*ADD cookie:2017/02/28 15:26 ADD*/
u8 pad2[16];/*30->16:2017/02/28 15:26 ADD*/
/*64B,512b*/
/*----------------------RULE 512bit--------------------------*/
}__attribute__((packed));
struct um_metadata{
#if defined(__LITTLE_ENDIAN) /*INTER*/
u64 ts; /*报文的接收时间戳*/
u64 seq:16, /*报文接收的序号*/
reserve:12, /*暂时保留未用*/
dstmid:8, /*报文分派的目的模块编号*/
srcmid:8, /*报文处理的源模块编号*/
len:12, /*报文的总长度,表示为:UM数据结构大小+2字节IP对齐+完整以太网报文大小*/
inout:8; /*报文的输入/输出端口号,接收时表示输入,发送时表示输出*/
u64 none[2]; /*用户自定义预留*/
#elif defined(__BIG_ENDIAN) /**/
u64 seq:16,
reserve:12,
dstmid:8,
srcmid:8,
len:12,
inout:8;
u64 ts;
u64 none[2];
#else
#error "Please fix <asm/byteorder.h>"
#endif
}__attribute__((packed));
#endif
/**
* @brief FAST平台硬件规则格式定义
* FAST规则主要由流关键字、关键字对应掩码、优先级、规则有效位、规则对应动作等组成。
* 其他字段主要在软件使用
*/
struct fast_rule{
struct fast_flow key; /**< @brief 规则内容存储结构 @see ::flow*/
struct fast_flow mask; /**< @brief 规则掩码设置结构,与key一一对应 @see ::flow*/
u32 priority; /**< @brief 规则的优先级设置*/
u32 valid; /**< @brief 规则的有效标志设置,要删除一条规则只需要将此标记置0,并更新到硬件*/
u64 action; /**< @brief 规则所对应的执行动作动作由两部分组成高4位为ACTION枚举类型低28位不此类型对应的值 @see ::ACTION*/
/*此前数据必须要写入到硬件*/
u32 flow_stats_len; /**< @brief 流表信息长度*/
u64 *flow_stats_info; /**< @brief 流表信息存储指针位置*/
u64 cookie; /**< @brief 用来存储流的cookie信息软件使用*/
u64 cookie_mask; /**< @brief 用来存储流cookie的掩码信息软件使用*/
u32 md5[4]; /**< @brief MD5值 @note 用来区分规则的唯一性,软件生成规则时即会判断是否规则重复*/
u32 pad[18]; /**< @brief 总长256B此为确保数据结构大小做的填充*/
};
/*保持硬件一条流表的完整长度为64B*4=256B长度*/
/*-----------------------------------流表相关----------------------------------------------*/
struct tsnflow /**/
{
u8 dmac[6]; /**< @brief Ethernet source address. */
u8 smac[6]; /**< @brief Ethernet destination address. */
u16 tci; /**< @brief 0 if no VLAN, VLAN_TAG_PRESENT set otherwise. */
u16 type; /**< @brief Ethernet frame type. */
//eth-16;
u8 proto; /**< @brief IP protocol or lower 8 bits of ARP opcode. */
u8 tos; /**< @brief IP ToS. */
u8 ttl; /**< @brief IP TTL/hop limit. */
u8 port:6, /**< @brief Input Port*/
frag:2; /**< @brief One of OVS_FRAG_TYPE_*. */
u32 sip; //源IP地址
u32 dip; //目的ip地址
u16 sport; //源端口号
u16 dport; //目的端口号
};
struct tsn_rule{
struct tsnflow key; /**< @brief 规则内容存储结构 @see ::flow*/
struct tsnflow mask; /**< @brief 规则掩码设置结构,与key一一对应 @see ::flow*/
u32 priority; /**< @brief 规则的优先级设置*/
u32 valid; /**< @brief 规则的有效标志设置,要删除一条规则只需要将此标记置0,并更新到硬件*/
u32 action; /**< @brief 规则所对应的执行动作动作由两部分组成高4位为ACTION枚举类型低28位不此类型对应的值 @see ::ACTION*/
/*此前数据必须要写入到硬件*/
u32 flow_stats_len; /**< @brief 流表信息长度*/
u64 *flow_stats_info; /**< @brief 流表信息存储指针位置*/
u32 *tmp; /*在S4系统中上面变量指针大小为32*/
u64 cookie; /**< @brief 用来存储流的cookie信息软件使用*/
u64 cookie_mask; /**< @brief 用来存储流cookie的掩码信息软件使用*/
u32 md5[4]; /**< @brief MD5值 @note 用来区分规则的唯一性,软件生成规则时即会判断是否规则重复*/
u32 pad[34]; /**< @brief 总长256B此为确保数据结构大小做的填充*/
};
struct tsnflow_30
{//40B
u8 pad[12];
u16 dport;
u16 sport;
u32 dip;
u32 sip;
u8 inport;
u8 ip_proto;
u16 vlan_filed;
u16 eth_type;
}__attribute__((packed));
struct tsn_rule_30{
struct tsnflow_30 key; /**< @brief 规则内容存储结构 @see ::flow*/
struct tsnflow_30 mask; /**< @brief 规则掩码设置结构,与key一一对应 @see ::flow*/
u32 priority; /**< @brief 规则的优先级设置*/
u32 valid; /**< @brief 规则的有效标志设置,要删除一条规则只需要将此标记置0,并更新到硬件*/
u32 action; /**< @brief 规则所对应的执行动作动作由两部分组成高4位为ACTION枚举类型低28位不此类型对应的值 @see ::ACTION*/
/*此前数据必须要写入到硬件*/
u32 flow_stats_len; /**< @brief 流表信息长度*/
u64 *flow_stats_info; /**< @brief 流表信息存储指针位置*/
u32 *tmp; /*在S4系统中上面变量指针大小为32*/
u64 cookie; /**< @brief 用来存储流的cookie信息软件使用*/
u64 cookie_mask; /**< @brief 用来存储流cookie的掩码信息软件使用*/
u32 md5[4]; /**< @brief MD5值 @note 用来区分规则的唯一性,软件生成规则时即会判断是否规则重复*/
u32 pad[29]; /**< @brief 总长256B此为确保数据结构大小做的填充*/
};
/*-----------------------------------BV新定义位宽104位5元组查表-----------------------------------*/
struct tuple5
{
u32 sip;
u32 dip;
u16 sport;
u16 dport;
u16 pad0;
u8 pad1;
u8 proto;
};
struct row_bv
{
struct tuple5 key;
struct tuple5 mask;
u32 idx:5, /**< 规则索引*/
valid:1, /**< 规则有效位*/
pad:26; /**< 暂时不用*/
u32 action;
};
/*-----------------------------------BV新定义位宽104位5元组查表-----------------------------------*/
/*-----------------------------------报文相关----------------------------------------------*/
/**
* @brief UM模块数据格式定义
*/
struct um_metadata{
#if defined(__LITTLE_ENDIAN) /*INTER*/
#ifdef FAST_10
u64 ts:32, /**< @brief 报文接收的时间戳 @note 如果用户需要使用表示更大的时间建议存储在第二拍数据中user[2]字段)*/
ts2:12,
flowID:14, /**< @brief 流ID号*/
priority:3, /**< @brief 报文优先级*/
discard:1, /**< @brief 指示报文是否丢弃 @note 默认为0表示不丢弃置1时表示丢弃*/
pktdst:1, /**< @brief 报文的输出目的方向 @note 0表示输出到网络端口1表示输出到CPU*/
pktsrc:1; /**< @brief 报文的输入源方向 @note 0表示网络端口输入1表示从CPU输入*/
u64 outport:16, /**< @brief 报文输出端口号 @note 以bitmap形式表示1表示从0号端口输出8表示从3号端口输出*/
seq:12, /**< @brief 报文接收时的序列号 @note 每个端口独立维护一个编号*/
dstmid:8, /**< @brief 报文下次处理的目的模块编号*/
srcmid:8, /**< @brief 报文上次处理时的模块编号*/
len:12, /**< @brief 报文长度 @note 最大可表示4095字节但FAST平台报文缓存区最大为2048完整以太网报文的MTU不要超过1500*/
inport:4, /**< @brief 输入端口号 @note 取值0——15最多表示16个输入端口*/
ttl:4; /**< @brief 报文通过模块的TTL值每过一个处理模块减1*/
#elif FAST_20
u64 ts:32, /**< @brief 时间戳*/
reserve:17, /**< @brief 保留*/
pktsrc:1, /**< @brief 分组的来源0为网络接口输入1为CPU输入此比特位在进入硬件时会交换到pkttype位置保留位为18位*/
flowID:14; /**< @brief 流ID*/
u64 seq:8, /**< @brief 分组接收序列号*/
pst:8, /**< @brief 标准协议类型(参考硬件定义)*/
dstmid:8, /**< @brief 下一个处理分组的模块ID*/
srcmid:8, /**< @brief 最近一次处理分组的模块ID*/
len:12, /**< @brief 报文长度*/
discard:1, /**< @brief 丢弃位*/
priority:3, /**< @brief 分组优先级*/
outport:6, /**< @brief 单播分组输出端口ID组播/泛洪:组播/泛洪表地址索引*/
outtype:2, /**< @brief 输出类型00单播01组播10泛洪11从输入接口输出*/
inport:6, /**< @brief 分组的输入端口号*/
pktdst:1, /**< @brief 分组目的0为网络接口输出1为送CPU*/
pkttype:1; /**< @brief 报文类型0数据报文1控制报文。硬件识别报文类别后会将pktsrc位交换到此恢复硬件数据格式*/
#endif
u64 user[2]; /**< @brief 用户自定义metadata数据格式与内容 @remarks 此字段由可用户改写但需要保证数据大小严格限定在16字节*/
#elif defined(__BIG_ENDIAN) /**/
#error "(__BIG_ENDIAN)Please fix <asm/byteorder.h>"
#else
#error "Please fix <asm/byteorder.h>"
#endif
};
/*FAST 2.0环形控制通路控制报文*/
struct ctl_metadata
{
u64 data:32,
mask:32;
u64 addr:32,
dstmid:8,
srcmid:8,
seq:12,
type:3,
pkttype:1;
u64 reserve;
u64 sessionID;
};
struct common_metadata
{
u64 a;
u64 b:32,
c:31,
pkttype:1;
u64 d;
u64 e;
};
/**
* @brief FAST架构完整报文格式定义
*
* FAST平台报文由3部分级成
* UM头 + 对齐标志 + 完整以太网报文
* UM头共32节字@see ::um_metadata
* 对齐标志2字节为对对齐IP地址填充使用
* 完成以太网报文大小为1514字节存储完整以太网报文内容
*/
struct fast_packet
{
union
{
struct um_metadata um; /**< @brief UM模块数据格式定义 @see ::um_metadata */
struct ctl_metadata cm; /**< 控制报文格式定义*/
struct common_metadata md; /**< 公共控制信息报文类型0数据1控制*/
};
#ifdef OPENBOX_S28
u16 flag; /**< @brief 2字节对齐标志主要是为了IP地址的对齐 @note 此标志在内核会用来标记是一个FAST类型报文建议用户不使用些字段*/
#endif
u8 data[1514]; /**< @brief 完整以太网报文数据暂时不含CRC数据*/
};
/**
* @brief UA与内核消息交互结构定义
*/
struct fast_ua_kernel_msg
{
int mid; /**< @brief 提供相应的处理MID号 @note 软件模块MID号范围为129-255*/
int pid; /**< @brief 用户程序的PIDUA注册时低层库函数自动获取当前进程号*/
UA_STATE state; /**< @brief UA消息枚举状态 @see ::UA_STATE*/
};
/**
* @brief UA模块用户回调函数类型定义
*
* @param pkt 表示接收到的报文,以指针方式传递
* @warning 此指针数据为库函数底层循环使用变量,用户若要存储数据需要自己申请新空间并从此指针位置拷贝数据
* @param pkt_len 表示此报文的有效长度 @note 此长度是指整个struct fast_packet的长度取值为pkt->um.len
*
* @return
*/
typedef int(*fast_ua_recv_callback)(struct fast_packet *pkt,int pkt_len);
/* Header on all OpenFlow packets. */
struct ofp_header{
uint8_t version; /* OFP_VERSION. */
uint8_t type; /* One of the OFPT_ constants. */
uint16_t length; /* Length including this ofp_header. */
uint32_t xid; /* Transaction id associated with this packet.
Replies use the same id as was in the request
to facilitate pairing. */
}__attribute__((packed));
struct ofp_buffer
{
struct ofp_header header;
u8 data[0];
}__attribute__((packed));
enum opfmsg_hook_ret
{
HANDLE = 0x1,
CONTINUE = 0x2
};
typedef int(*openflow_msg_callback)(struct ofp_buffer *ofpbuf,int len);
/**
* @brief IPv6地址定义
*/
struct in6_xaddr
{
u8 addr[16]; /**< @brief 存储IPv6地址的每个字节对象*/
};
/* Ensure that we can do comparisons as longs. */
#endif //__FAST_STRUCT_H__

71
openflow/fast_sys_dev.h Normal file
View File

@ -0,0 +1,71 @@
/***************************************************************************
* fast_sys_dev.h
*
* 2018/09/18 21:17:17 星期二
* Copyright 2018 XuDongLai
* <XuDongLai0923@163.com>
****************************************************************************/
/*
* fast_sys_dev.h
*
* Copyright (C) 2018 - XuDongLai
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __FAST_SYS_DEV_H__
#define __FAST_SYS_DEV_H__
/*---------------REG------------------*/
int fast_init_hw(u64 addr,u64 len);/** 硬件资源初始NetMagic08则进行连接操作*/
void fast_distroy_hw(void);/** 销毁硬件资源信息NetMagic08则进行释放连接操作*/
/*---------------RULE------------------*/
void print_hw_rule(void);/** 打印硬件规则(通过寄存器读返回,并显示)*/
void print_sw_rule(void);/** 打印软件缓存的规则*/
void init_rule(u32 default_action); /** 初始化规则模块,需要输入默认动作2017/06/01修改*/
int fast_add_rule(struct fast_rule *rule);/** 添加一条规则*/
int fast_modify_rule(struct fast_rule *rule,int idx);/** 修改指定位置的规则,函数内部会同步到硬件*/
int fast_del_rule(int idx);/** 删除一条规则,函数内部会同步到硬件*/
int read_hw_rule(struct fast_rule *rule,int index);/** 从硬件读取一条指定的规则内容*/
void set_rule_mac64(char *mac,u64 value);/** */
void set_rule_mac_oxm(char *mac,char *oxm);/** OXM是网络序*/
void set_rule_ipv6_oxm(char *ipv6,char *oxm);/** */
void oxm2rule(char *dst,char *oxm,int len);/** */
u32 fast_match_rule(struct fast_flow *key);
void print_sw_rule_by_idx(int idx);
void print_user_rule(struct fast_rule *rule);
/**----UA库*/
void print_pkt(struct fast_packet *pkt,int pkt_len);/** 打印FAST结构报文*/
/*---------------Auto Measure System(AMS)------------------*/
int fast_ams_alloc(void);/** 获取硬件测量权限 */
void fast_ams_free(void);/** 释放测量权限 */
int fast_ams_send(struct fast_packet *send_pkt[],u64 pkt_space_ts[],int count);/** 发送测量报文,报文数组,对应时间间隔数组 */
void fast_ams_start(void);/** 启动硬件发送报文流程 */
int fase_ams_check(void);/** 读硬件状态,判断此次测量是否有效 */
int fast_ams_computer(struct fast_packet *recv_pkt[],u64 pkt_ts_result[],int count);/** 收到测量报文后进行测量计算结果存储在pkt_ts_result数组中 */
/*---------------OpenFlow Protocol(OFP)------------------*/
int ofp_init(int argc,char *argv[]);/** 初始化OFP通道*/
void ofp_exit(void);/** 退出OFP通道*/
void send_openflow_message(struct ofp_buffer *ofpmsg,int len);
int openflow_hook_init(int mask,openflow_msg_callback callback);
#endif //__FAST_SYS_DEV_H__

45
openflow/fast_type.h Normal file
View File

@ -0,0 +1,45 @@
/** *************************************************************************
* @file fast_type.h
* @brief FAST平台的数据类型定义
*
* FAST平台主要为网络数据处理平台为方便用户直观了解数据大小用了一种非常直观的
* 方式来定义数据如u8,u16,u32,u64分别表示无符号的8位1字节16位2字节
* 32位4字节64位8字节s8,s16,s32,s64分别表示对应有符号数。
*
* @date 2017/01/05 12:04:20 星期四
* @author XDL(Copyright 2017 XuDongLai)
* @email <XuDongLai0923@163.com>
* @version 0.2.0
*
****************************************************************************/
/*
* fast_type.h
*
* Copyright (C) 2017 - XuDongLai
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __FAST_TYPE_H__
#define __FAST_TYPE_H__
typedef char s8; /**< 有符号的8位1字节数据定义*/
typedef unsigned char u8; /**< 无符号的8位1字节数据定义*/
typedef short s16; /**< 有符号的16位2字节数据定义*/
typedef unsigned short u16; /**< 无符号的16位2字节数据定义*/
typedef int s32; /**< 有符号的32位4字节数据定义*/
typedef unsigned int u32; /**< 无符号的32位4字节数据定义*/
typedef long long s64; /**< 有符号的64位8字节数据定义*/
typedef unsigned long long u64; /**< 无符号的64位8字节数据定义*/
#endif //__FAST_TYPE_H__

70
openflow/fast_vaddr.h Normal file
View File

@ -0,0 +1,70 @@
/** *************************************************************************
* @file fast_vaddr.h
* @brief FAST平台硬件虚拟地址空间定义
*
* FAST平台硬件的所有地址有一套规范的地址空间定义根据功能需求进行地址分区管理
* 其地址分区如下:\n
*
* @date 2017/01/05 13:31:40 星期四
* @author XDL(Copyright 2017 XuDongLai)
* @email <XuDongLai0923@163.com>
* @version 0.2.0
****************************************************************************/
/*
* fast_vaddr.h
*
* Copyright (C) 2017 - XuDongLai
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __FAST_VADDR_H__
#define __FAST_VADDR_H__
#ifdef OPENBOX_S4
#include "openboxS4.h"
#elif OPENBOX_S28
#include "openboxS28.h"
#elif NETMAGIC08
#include "netmagic08.h"
#elif XDL_DEBUG
#include "xdl_debug.h"
#else
#error "Please Select Platform(OPENBOX_S4/OPENBOX_S28/XDL_DEBUG)!"
#include "xdl_debug.h"
#endif
/** 系统默认UA使用MID值定义*/
#define FAST_DMID_PROTO_STACK 0x80 /**< 协议栈的MID值的定义,目的MID为0x80表示送到内核协议栈,大于0x80为软件模块否则为硬件模块 */
#define FAST_UA_DFT_L2SWITCH 0x81 /**< 系统发布版本中的2层交换工程使用*/
#define FAST_UA_DFT_XOFP 0x82 /**< 系统发布版本中的OpenFlow交换机工程使用*/
#define FAST_UA_DFT_AMS 0x83 /**< 系统发布版本中的AMS测量模块工程使用*/
#define FAST_UA_DFT_L3ROUTE 0x84 /**< 系统发布版本中的3层路由工程使用*/
#define FAST_UA_DFT_CTL_RW 0x85 /**< 系统发布版本中的控制通路测试工程使用*/
#define FAST_UA_DFT_UA_FWD 0x86 /**< 系统发布版本中的UA示例转发与测试工程使用*/
#define FAST_UA_DFT_HWROUTE 0x87 /**< 系统发布版本中的UA示例转发与测试工程使用*/
#define SPEED_10 10
#define SPEED_100 100
#define SPEED_1000 1000
#define SPEED_2500 2500
#define SPEED_10000 10000
/*AMS模块申明*/
#define FAST_AMS_TX_TIME_H 0x8c000
#define FAST_AMS_TX_TIME_L 0x8c004
#define FAST_AMS_TX_STATUS 0x8c010
#define FAST_AMS_TX_START 0x8c018
#endif//__FAST_VADDR_H__

89
openflow/fast_version.h Normal file
View File

@ -0,0 +1,89 @@
/***************************************************************************
* fast_version.h
*
* 2018/09/18 17:47:43 星期二
* Copyright 2018 XuDongLai
* <XuDongLai0923@163.com>
****************************************************************************/
/*
* fast_version.h
*
* Copyright (C) 2018 - XuDongLai
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __FAST_VERSION_H__
#define __FAST_VERSION_H__
/*文档编写规范:
*以该版本定义说明开始
* 最后一行为该版本定义的最新版本号,并带有详细描述
* 中间注释以前使用过的版本,并对历史版本做出详细描述
*/
/** @brief 寄存器读写功能库的版本号定义 */
/*标准的寄存器读写控制方法读写接口均使用64位地址如果是32位系统则拆分为2次操作*/
#define LIBREG_VERSION "20180827"
/** @brief openflow协议通道库的版本号定义 */
/*该库包含了ofp协议通道相关功能与控制器建立连接、交互状态与统计信息支持流表配置等功能*/
#define LIBOFP_VERSION "20180827"
/** @brief 规则操作库的版本号定义 */
/*基于FAST架构参考openflow流表规范定义的一种硬件流表管理示例开发库*/
#define LIBRULE_VERSION "20181015"
/** @brief UA开发库的版本号定义 */
/*基于FAST架构提供用户应用UA的编程开发接口支持收发硬件流水线报文
* 支持对硬件流水线模块进行管理配置(环形控制通路方式)
*/
#define LIBUA_VERSION "20180827"
/** @brief 自动测量系统库的版本号定义 */
/*自动测量系统是UA编程开发的一个具体示例配合硬件AMS流水线模块一起完成网络测量功能
*硬件最大支持一次提交32个报文并按照每个报文携带的具体时间进行发送回环测试时还
* 可以对每个报文进行统计,计算每个报文的传输时间等信息
*/
#define LIBAMS_VERSION "20180827"
/** @brief 二层交换应用的版本号定义 */
#define L2SWITCH_VERSION "20180827"
/** @brief OpenFlow通道应用的版本号定义 */
#define XOF_VERSION "20180827"
/** @brief 自动测量系统应用的版本号定义 */
#define AMS_VERSION "20180827"
/** @brief 寄存器读写应用的版本号定义 */
#define REG_RW_VERSION "20180827"
/** @brief 端口计数应用的版本号定义 */
#define PORT_COUNTS_VERSION "20180827"
/** @brief 二层交换应用的版本号定义 */
#define CTL_RW_VERSION "20180830"
/** @brief MEM_RW应用的版本号定义 */
#define MEM_RW_VERSION "20180911"
/** @brief 硬件规则读写应用的版本号定义 */
#define RULE_RW_VERSION "20180827"
/** @brief 端口状态应用的版本号定义 */
#define PORT_STATUS_VERSION "20180918"
/** @brief UM模块DEBUG应用的版本号定义 */
#define DEBUG_VERSION "20180827"
/** @brief VERSION应用的版本号定义 */
#define VERSION_VERSION "20181010"
/** @brief UA_FWD应用的版本号定义 */
#define UA_FWD_VERSION "20181018"
#endif //__FAST_VERSION_H__

BIN
openflow/include.tgz Normal file

Binary file not shown.

View File

@ -0,0 +1,518 @@
/***************************************************************************
* main_opfmsg.c
*
* 2017/02/28 15:52:34 星期二
* Copyright 2017 XuDongLai
* <XuDongLai0923@163.com>
****************************************************************************/
/*
* main_opfmsg.c
*
* Copyright (C) 2017 - XuDongLai
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "fast.h"
#include <main_libofp.h>
#include <ofp_v4.h>
struct eth_header;
void nms_exec_action(u32 inport,u32 outport,struct eth_header *eth,int len,int hit_idx);
extern void pkt_print(u8 *pkt, uint16_t len);
static struct ofp_buffer *build_opfmsg_reply_ofpbuf(uint8_t type,uint32_t xid,uint16_t len);
#ifndef htobe64
#if __BYTE_ORDER == __LITTLE_ENDIAN
#define htobe64(x) __builtin_bswap64((u64)(x))
#define be64toh(x) __builtin_bswap64((u64)(x))
#else
#define htobe64(x) (x)
#define be64toh(x) (x)
#endif
#endif
static inline uint64_t host_to_be64(uint64_t value)
{
return htobe64(value);
}
static struct ofp_buffer *build_multipart_reply(struct ofp_buffer *request,
uint16_t mp_type,
size_t body_len,
struct ofp_multipart **mp_out)
{
size_t reply_len = sizeof(struct ofp_header) + sizeof(struct ofp_multipart) + body_len;
struct ofp_buffer *reply = build_opfmsg_reply_ofpbuf(
OFPT_MULTIPART_REPLY, request->header.xid, reply_len);
if (!reply) {
return NULL;
}
struct ofp_multipart *mp = (struct ofp_multipart *)reply->data;
memset(mp, 0, sizeof(*mp));
mp->type = htons(mp_type);
if (mp_out) {
*mp_out = mp;
}
return reply;
}
static enum opfmsg_hook_ret handle_opfmsg_get_config_request(struct ofp_buffer *ofpbuf);
static enum opfmsg_hook_ret handle_opfmsg_multipart_request(struct ofp_buffer *ofpbuf);
static enum opfmsg_hook_ret handle_opfmsg_packet_out(struct ofp_buffer *ofpbuf);
static enum opfmsg_hook_ret handle_opfmsg_flow_mod(struct ofp_buffer *ofpbuf);
static enum opfmsg_hook_ret handle_opfmsg_role_request(struct ofp_buffer *ofpbuf);
/**
* @brief
*
* 构建openflow报文头
*
*/
void build_opfmsg_header(struct ofp_header *ofpbuf_header,uint16_t len,uint8_t type,uint32_t xid)
{
ofpbuf_header->version = OFP13_VERSION;
ofpbuf_header->length = htons(len);
ofpbuf_header->type = type;
ofpbuf_header->xid = xid;
printf("ofpbuf_header->length=%d\n",ntohs(ofpbuf_header->length));
}
/**
* @brief
*
* 构建回应报文
*
* @return
*/
static struct ofp_buffer *build_opfmsg_reply_ofpbuf(uint8_t type,uint32_t xid,uint16_t len)
{
struct ofp_buffer *reply = (struct ofp_buffer *)malloc(len);
if (!reply) {
return NULL;
}
memset(reply,0,len);
build_opfmsg_header(&reply->header,len,type,xid);
printf("ofpbuf_reply,malloc:%p,type:%d,len:%d\n",reply,type,len);
return reply;
}
static enum opfmsg_hook_ret
handle_opfmsg_hello(struct ofp_buffer *ofpbuf)
{
printf("header.version:%d\n",ofpbuf->header.version);
if(ofpbuf->header.version == 0x04)
{
printf("RECV HELLO!\n\n\n");
}else //不是openflow1.3协议则发送error消息
{
int reply_len = sizeof(struct ofp_header);
//填充openflow协议头协议类型为OFPT_ERROR
struct ofp_buffer *ofpbuf_reply =
build_opfmsg_reply_ofpbuf(OFPT_ERROR,ofpbuf->header.xid,reply_len);
if (!ofpbuf_reply) {
return CONTINUE;
}
//打印error消息
pkt_print((u8 *)ofpbuf,htons(ofpbuf->header.length));
//发送error消息
send_openflow_message(ofpbuf_reply,reply_len);
}
//返回已处理状态码
return HANDLE;
}
static enum opfmsg_hook_ret
handle_opfmsg_features_request(struct ofp_buffer *ofpbuf)
{
int feature_reply_len = sizeof(struct ofp_switch_features)+sizeof(struct ofp_header);
//填充openflow协议头协议类型为 OFPT_FEATURES_REPLY
struct ofp_buffer *ofpbuf_reply = build_opfmsg_reply_ofpbuf(OFPT_FEATURES_REPLY,
ofpbuf->header.xid,feature_reply_len);
if (!ofpbuf_reply) {
return CONTINUE;
}
//获取交换机的功能信息 指针变量 feature_reply_msg
struct ofp_switch_features *feature_reply_msg =(struct ofp_switch_features *)ofpbuf_reply->data;
//TODO
/* 构建feature回应报文把交换机的功能信息发送给控制器指针变量feature_reply_msg赋值 */
memset(feature_reply_msg,0,sizeof(*feature_reply_msg));
feature_reply_msg->datapath_id = host_to_be64(0x0100000000000001ULL);
feature_reply_msg->n_buffers = htonl(256);
feature_reply_msg->n_tables = 4;
feature_reply_msg->capabilities = htonl(0);
//调用系统发送接口,发送回应报文
send_openflow_message(ofpbuf_reply,feature_reply_len);
//返回已处理状态码
return HANDLE;
}
static enum opfmsg_hook_ret handle_opfmsg_get_config_request(struct ofp_buffer *ofpbuf)
{
size_t reply_len = sizeof(struct ofp_header) + sizeof(struct ofp_switch_config);
struct ofp_buffer *reply = build_opfmsg_reply_ofpbuf(
OFPT_GET_CONFIG_REPLY, ofpbuf->header.xid, reply_len);
if (!reply) {
return CONTINUE;
}
struct ofp_switch_config *cfg = (struct ofp_switch_config *)reply->data;
memset(cfg, 0, sizeof(*cfg));
cfg->flags = htons(0);
cfg->miss_send_len = htons(0xffff);
send_openflow_message(reply, reply_len);
return HANDLE;
}
static void handle_multipart_desc(struct ofp_buffer *ofpbuf)
{
struct ofp_multipart *mp_reply = NULL;
struct ofp_buffer *reply = build_multipart_reply(ofpbuf, OFPMP_DESC,
sizeof(struct ofp_desc_stats), &mp_reply);
if (!reply || !mp_reply) {
return;
}
struct ofp_desc_stats *desc = mp_reply->ofpmp_desc;
memset(desc, 0, sizeof(*desc));
snprintf(desc->mfr_desc, sizeof(desc->mfr_desc), "FAST Reference Switch");
snprintf(desc->hw_desc, sizeof(desc->hw_desc), "FAST Virtual datapath");
snprintf(desc->sw_desc, sizeof(desc->sw_desc), "OF1.3 Example Stack");
snprintf(desc->serial_num, sizeof(desc->serial_num), "FAST-0001");
snprintf(desc->dp_desc, sizeof(desc->dp_desc), "FAST educational datapath");
size_t reply_len = sizeof(struct ofp_header) + sizeof(struct ofp_multipart) + sizeof(struct ofp_desc_stats);
send_openflow_message(reply, reply_len);
}
static void handle_multipart_flow(struct ofp_buffer *ofpbuf)
{
struct ofp_multipart *mp_reply = NULL;
struct ofp_buffer *reply = build_multipart_reply(ofpbuf, OFPMP_FLOW, 0, &mp_reply);
if (!reply) {
return;
}
size_t reply_len = sizeof(struct ofp_header) + sizeof(struct ofp_multipart);
send_openflow_message(reply, reply_len);
}
static void handle_multipart_aggregate(struct ofp_buffer *ofpbuf)
{
struct ofp_multipart *mp_reply = NULL;
struct ofp_buffer *reply = build_multipart_reply(ofpbuf, OFPMP_AGGREGATE,
sizeof(struct ofp_aggregate_stats_reply), &mp_reply);
if (!reply || !mp_reply) {
return;
}
struct ofp_aggregate_stats_reply *body = mp_reply->ofpmp_aggregate_reply;
memset(body, 0, sizeof(*body));
body->packet_count = host_to_be64(0);
body->byte_count = host_to_be64(0);
body->flow_count = htonl(0);
size_t reply_len = sizeof(struct ofp_header) + sizeof(struct ofp_multipart) +
sizeof(struct ofp_aggregate_stats_reply);
send_openflow_message(reply, reply_len);
}
static void handle_multipart_table(struct ofp_buffer *ofpbuf)
{
struct ofp_multipart *mp_reply = NULL;
struct ofp_buffer *reply = build_multipart_reply(ofpbuf, OFPMP_TABLE,
sizeof(struct ofp_table_stats), &mp_reply);
if (!reply || !mp_reply) {
return;
}
struct ofp_table_stats *table = mp_reply->table_stats;
memset(table, 0, sizeof(*table));
table->table_id = 0;
table->active_count = htonl(0);
table->lookup_count = host_to_be64(0);
table->matched_count = host_to_be64(0);
size_t reply_len = sizeof(struct ofp_header) + sizeof(struct ofp_multipart) + sizeof(struct ofp_table_stats);
send_openflow_message(reply, reply_len);
}
static void handle_multipart_port_stats(struct ofp_buffer *ofpbuf)
{
struct ofp_multipart *mp_reply = NULL;
struct ofp_buffer *reply = build_multipart_reply(ofpbuf, OFPMP_PORT_STATS,
sizeof(struct ofp_port_stats), &mp_reply);
if (!reply || !mp_reply) {
return;
}
struct ofp_port_stats *stats = mp_reply->ofpmp_port_stats;
memset(stats, 0, sizeof(*stats));
stats->port_no = htonl(1);
stats->rx_packets = host_to_be64(0);
stats->tx_packets = host_to_be64(0);
stats->rx_bytes = host_to_be64(0);
stats->tx_bytes = host_to_be64(0);
stats->rx_dropped = host_to_be64(0);
stats->tx_dropped = host_to_be64(0);
stats->rx_errors = host_to_be64(0);
stats->tx_errors = host_to_be64(0);
stats->rx_frame_err = host_to_be64(0);
stats->rx_over_err = host_to_be64(0);
stats->rx_crc_err = host_to_be64(0);
stats->collisions = host_to_be64(0);
stats->duration_sec = htonl(0);
stats->duration_nsec = htonl(0);
size_t reply_len = sizeof(struct ofp_header) + sizeof(struct ofp_multipart) + sizeof(struct ofp_port_stats);
send_openflow_message(reply, reply_len);
}
static void handle_multipart_group_features(struct ofp_buffer *ofpbuf)
{
struct ofp_multipart *mp_reply = NULL;
struct ofp_buffer *reply = build_multipart_reply(ofpbuf, OFPMP_GROUP_FEATURES,
sizeof(struct ofp_group_features), &mp_reply);
if (!reply || !mp_reply) {
return;
}
struct ofp_group_features *features = (struct ofp_group_features *)mp_reply->body;
memset(features, 0, sizeof(*features));
features->types = htonl(0);
features->capabilities = htonl(0);
size_t reply_len = sizeof(struct ofp_header) + sizeof(struct ofp_multipart) +
sizeof(struct ofp_group_features);
send_openflow_message(reply, reply_len);
}
static void fill_port(struct ofp_port *port, uint32_t port_no, const char *name)
{
memset(port, 0, sizeof(*port));
port->port_no = htonl(port_no);
snprintf(port->name, sizeof(port->name), "%s", name);
port->curr_speed = htonl(1000000);
port->max_speed = htonl(1000000);
}
static void handle_multipart_port_desc(struct ofp_buffer *ofpbuf)
{
size_t ports_count = 2;
size_t body_len = ports_count * sizeof(struct ofp_port);
struct ofp_multipart *mp_reply = NULL;
struct ofp_buffer *reply = build_multipart_reply(ofpbuf, OFPMP_PORT_DESC, body_len, &mp_reply);
if (!reply || !mp_reply) {
return;
}
struct ofp_port *ports = mp_reply->ofpmp_port_desc;
fill_port(&ports[0], 1, "fast-eth1");
fill_port(&ports[1], 2, "fast-eth2");
size_t reply_len = sizeof(struct ofp_header) + sizeof(struct ofp_multipart) + body_len;
send_openflow_message(reply, reply_len);
}
static enum opfmsg_hook_ret handle_opfmsg_multipart_request(struct ofp_buffer *ofpbuf)
{
if (ntohs(ofpbuf->header.length) < sizeof(struct ofp_header) + sizeof(struct ofp_multipart)) {
printf("multipart request too short\n");
return HANDLE;
}
struct ofp_multipart *mp = (struct ofp_multipart *)ofpbuf->data;
uint16_t type = ntohs(mp->type);
printf("multipart request type=%u\n", type);
switch (type) {
case OFPMP_DESC:
handle_multipart_desc(ofpbuf);
break;
case OFPMP_FLOW:
handle_multipart_flow(ofpbuf);
break;
case OFPMP_AGGREGATE:
handle_multipart_aggregate(ofpbuf);
break;
case OFPMP_TABLE:
handle_multipart_table(ofpbuf);
break;
case OFPMP_PORT_STATS:
handle_multipart_port_stats(ofpbuf);
break;
case OFPMP_GROUP_FEATURES:
handle_multipart_group_features(ofpbuf);
break;
case OFPMP_PORT_DESC:
handle_multipart_port_desc(ofpbuf);
break;
default:
printf("unsupported multipart type %u\n", type);
break;
}
return HANDLE;
}
static enum opfmsg_hook_ret handle_opfmsg_packet_out(struct ofp_buffer *ofpbuf)
{
struct ofp_packet_out *pkt_out = (struct ofp_packet_out *)&ofpbuf->header;
uint16_t actions_len = ntohs(pkt_out->actions_len);
uint16_t total_len = ntohs(ofpbuf->header.length);
if (total_len < sizeof(struct ofp_packet_out)) {
printf("packet_out length %u shorter than header\n", total_len);
return HANDLE;
}
if (actions_len > total_len - sizeof(struct ofp_packet_out)) {
printf("packet_out invalid actions_len=%u total_len=%u\n", actions_len, total_len);
return HANDLE;
}
uint32_t in_port = ntohl(pkt_out->in_port);
uint8_t *payload = (uint8_t *)pkt_out->actions + actions_len;
int payload_len = total_len - (payload - (uint8_t *)&ofpbuf->header);
if (payload_len <= 0) {
printf("packet_out without payload\n");
return HANDLE;
}
uint32_t out_port = 0;
if (actions_len >= sizeof(struct ofp_action_output)) {
struct ofp_action_output *action = (struct ofp_action_output *)pkt_out->actions;
out_port = ntohl(action->port);
}
printf("packet_out in_port=%u out_port=%u len=%d\n", in_port, out_port, payload_len);
nms_exec_action(in_port, out_port, (struct eth_header *)payload, payload_len, -1);
return HANDLE;
}
static enum opfmsg_hook_ret handle_opfmsg_flow_mod(struct ofp_buffer *ofpbuf)
{
uint16_t total_len = ntohs(ofpbuf->header.length);
if (total_len < sizeof(struct ofp_header) + sizeof(struct fast_rule)) {
printf("flow_mod payload too small: %u\n", total_len);
return HANDLE;
}
struct fast_rule *rule = (struct fast_rule *)ofpbuf->data;
print_user_rule(rule);
int idx = fast_add_rule(rule);
printf("fast_add_rule result index=%d\n", idx);
return HANDLE;
}
static enum opfmsg_hook_ret handle_opfmsg_role_request(struct ofp_buffer *ofpbuf)
{
size_t reply_len = sizeof(struct ofp_header) + sizeof(struct ofp_role);
struct ofp_buffer *reply = build_opfmsg_reply_ofpbuf(
OFPT_ROLE_REPLY, ofpbuf->header.xid, reply_len);
if (!reply) {
return CONTINUE;
}
struct ofp_role *req = (struct ofp_role *)ofpbuf->data;
struct ofp_role *rsp = (struct ofp_role *)reply->data;
memcpy(rsp, req, sizeof(*rsp));
send_openflow_message(reply, reply_len);
return HANDLE;
}
/**
*
* callback 的返回值必须有且只能存在两种返回值:
*
* 已处理: HANDLE = 0x1,
* 不处理CONTINUE = 0x2
*
*/
static int handle_openflow_callback(struct ofp_buffer *ofpbuf,int len)
{
int oftype = ofpbuf->header.type;
printf("header.version:%d,type:%d,len:%d\n",ofpbuf->header.version,ofpbuf->header.type,htons(ofpbuf->header.length));
switch(oftype)
{
case OFPT_HELLO:
return handle_opfmsg_hello(ofpbuf);
case OFPT_FEATURES_REQUEST:
return handle_opfmsg_features_request(ofpbuf);
case OFPT_GET_CONFIG_REQUEST:
return handle_opfmsg_get_config_request(ofpbuf);
case OFPT_MULTIPART_REQUEST:
return handle_opfmsg_multipart_request(ofpbuf);
case OFPT_PACKET_OUT:
return handle_opfmsg_packet_out(ofpbuf);
case OFPT_FLOW_MOD:
return handle_opfmsg_flow_mod(ofpbuf);
case OFPT_ROLE_REQUEST:
return handle_opfmsg_role_request(ofpbuf);
default:
printf(" --do not handle the message!\n");
}
//返回不处理状态码
return CONTINUE;
}
/** mask 为获取openflow消息的bimap掩码,openflow消息枚举见 "enum ofp_type"
*
* 如:获取 OFPT_HELLO(0) 和 OFPT_FEATURES_REQUEST(5)消息,
* mask值设为 mask = 0b'100001 = 0x21
*
*/
int main(int argc,char* argv[])
{
int mask = 0;
ofp_init(argc,argv);
//获取 OFPT_HELLO(0) 和 OFPT_FEATURES_REQUEST (5)消息
mask = (1U << OFPT_HELLO) |
(1U << OFPT_FEATURES_REQUEST) |
(1U << OFPT_GET_CONFIG_REQUEST) |
(1U << OFPT_MULTIPART_REQUEST) |
(1U << OFPT_PACKET_OUT) |
(1U << OFPT_FLOW_MOD) |
(1U << OFPT_ROLE_REQUEST);
openflow_hook_init(mask,handle_openflow_callback);
pause();
return 0;
}

25
openflow/make.log Normal file
View File

@ -0,0 +1,25 @@
main_user_openflow.c: In function build_multipart_reply:
main_user_openflow.c:54:57: warning: implicit declaration of function build_opfmsg_reply_ofpbuf [-Wimplicit-function-declaration]
struct ofp_buffer *reply = (struct ofp_buffer *)build_opfmsg_reply_ofpbuf(
^
main_user_openflow.c: At top level:
main_user_openflow.c:98:5: error: conflicting types for build_opfmsg_reply_ofpbuf
u8 *build_opfmsg_reply_ofpbuf(uint8_t type,uint32_t xid,uint16_t len)
^
main_user_openflow.c:54:57: note: previous implicit declaration of build_opfmsg_reply_ofpbuf was here
struct ofp_buffer *reply = (struct ofp_buffer *)build_opfmsg_reply_ofpbuf(
^
main_user_openflow.c: In function handle_opfmsg_hello:
main_user_openflow.c:127:13: warning: implicit declaration of function pkt_print [-Wimplicit-function-declaration]
pkt_print((u8 *)ofpbuf,htons(ofpbuf->header.length));
^
main_user_openflow.c: In function main:
main_user_openflow.c:472:26: warning: passing argument 2 of openflow_hook_init from incompatible pointer type [-Wincompatible-pointer-types]
openflow_hook_init(mask,handle_openflow_callback);
^
In file included from /usr/local/include/fast.h:87:0,
from main_user_openflow.c:26:
/usr/local/include/fast_sys_dev.h:69:5: note: expected openflow_msg_callback {aka int (*)(struct ofp_buffer *, int)} but argument is of type enum ofperr (*)(struct ofp_buffer *, int)
int openflow_hook_init(int mask,openflow_msg_callback callback);
^

1069
openflow/ofp_v4.h Executable file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,68 @@
import httplib
import json
class StaticFlowPusher(object):
def __init__(self, server):
self.server = server
def get(self, data):
ret = self.rest_call({}, 'GET')
return json.loads(ret[2])
def set(self, data):
ret = self.rest_call(data, 'POST')
return ret[0] == 200
def remove(self, objtype, data):
ret = self.rest_call(data, 'DELETE')
return ret[0] == 200
def rest_call(self, data, action):
path = '/wm/staticflowpusher/json'
headers = {
'Content-type': 'application/json',
'Accept': 'application/json',
}
body = json.dumps(data)
conn = httplib.HTTPConnection(self.server, 8080)
conn.request(action, path, body, headers)
response = conn.getresponse()
ret = (response.status, response.reason, response.read())
print ret
conn.close()
return ret
pusher = StaticFlowPusher('127.0.0.1')
flowbe0 = {
'switch':"01:00:00:00:00:00:00:00",
"table":"0",
"name":"flow-0",
"cookie":"60",
"priority":"1",
"active":"true",
"eth_type":"0x800", #type
"in_port":"1", #inport
"ipv4_src":"192.168.2.111", #sip
"ipv4_dst":"192.168.2.119", #dip
"actions":"output=2" # 执行动作,输出端口为 2
}
flowbe1 = {
'switch':"01:00:00:00:00:00:00:00",
"table":"0",
"name":"flow-1",
"cookie":"61",
"priority":"1",
"active":"true",
"eth_type":"0x800", #type
"in_port":"3", #inport
"ipv4_src":"192.168.2.119", #sip
"ipv4_dst":"192.168.2.111", #dip
"actions":"output=2" # 执行动作,输出端口为 2
}
pusher.set(flow0)
pusher.set(flow1)

BIN
openflow/user_openflow Executable file

Binary file not shown.

View File

@ -0,0 +1,119 @@
/***********************************************************
Copyright 1987, 1988, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
/****************************************************************
*
* Callbacks
*
****************************************************************/
typedef XrmResource **CallbackTable;
#define _XtCBCalling 1
#define _XtCBFreeAfterCalling 2
_XFUNCPROTOBEGIN
typedef struct internalCallbackRec {
unsigned short count;
char is_padded; /* contains NULL padding for external form */
char call_state; /* combination of _XtCB{FreeAfter}Calling */
#ifdef LONG64
unsigned int align_pad; /* padding to align callback list */
#endif
/* XtCallbackList */
} InternalCallbackRec, *InternalCallbackList;
typedef Boolean (*_XtConditionProc)(
XtPointer /* data */
);
extern void _XtAddCallback(
InternalCallbackList* /* callbacks */,
XtCallbackProc /* callback */,
XtPointer /* closure */
);
extern void _XtAddCallbackOnce(
InternalCallbackList* /* callbacks */,
XtCallbackProc /* callback */,
XtPointer /* closure */
);
extern InternalCallbackList _XtCompileCallbackList(
XtCallbackList /* xtcallbacks */
);
extern XtCallbackList _XtGetCallbackList(
InternalCallbackList* /* callbacks */
);
extern void _XtRemoveAllCallbacks(
InternalCallbackList* /* callbacks */
);
extern void _XtRemoveCallback(
InternalCallbackList* /* callbacks */,
XtCallbackProc /* callback */,
XtPointer /* closure */
);
extern void _XtPeekCallback(
Widget /* widget */,
XtCallbackList /* callbacks */,
XtCallbackProc * /* callback */,
XtPointer * /* closure */
);
extern void _XtCallConditionalCallbackList(
Widget /* widget */,
XtCallbackList /* callbacks */,
XtPointer /* call_data */,
_XtConditionProc /* cond_proc */
);
_XFUNCPROTOEND

View File

@ -0,0 +1,102 @@
/***********************************************************
Copyright 1987, 1988, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
#ifndef _XtComposite_h
#define _XtComposite_h
typedef struct _CompositeClassRec *CompositeWidgetClass;
typedef Cardinal (*XtOrderProc)(
Widget /* child */
);
_XFUNCPROTOBEGIN
extern void XtManageChildren(
WidgetList /* children */,
Cardinal /* num_children */
);
extern void XtManageChild(
Widget /* child */
);
extern void XtUnmanageChildren(
WidgetList /* children */,
Cardinal /* num_children */
);
extern void XtUnmanageChild(
Widget /* child */
);
typedef void (*XtDoChangeProc)(
Widget /* composite_parent */,
WidgetList /* unmanage_children */,
Cardinal * /* num_unmanage_children */,
WidgetList /* manage_children */,
Cardinal * /* num_manage_children */,
XtPointer /* client_data */
);
extern void XtChangeManagedSet(
WidgetList /* unmanage_children */,
Cardinal /* num_unmanage_children */,
XtDoChangeProc /* do_change_proc */,
XtPointer /* client_data */,
WidgetList /* manage_children */,
Cardinal /* num_manage_children */
);
_XFUNCPROTOEND
#ifndef VMS
externalref WidgetClass compositeWidgetClass;
#endif
#endif /* _XtComposite_h */
/* DON'T ADD STUFF AFTER THIS #endif */

View File

@ -0,0 +1,113 @@
/***********************************************************
Copyright 1987, 1988, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
#ifndef _XtCompositeP_h
#define _XtCompositeP_h
#include <X11/Composite.h>
_XFUNCPROTOBEGIN
/************************************************************************
*
* Additional instance fields for widgets of (sub)class 'Composite'
*
************************************************************************/
typedef struct _CompositePart {
WidgetList children; /* array of ALL widget children */
Cardinal num_children; /* total number of widget children */
Cardinal num_slots; /* number of slots in children array */
XtOrderProc insert_position; /* compute position of new child */
} CompositePart,*CompositePtr;
typedef struct _CompositeRec {
CorePart core;
CompositePart composite;
} CompositeRec;
/*********************************************************************
*
* Additional class fields for widgets of (sub)class 'Composite'
*
********************************************************************/
typedef struct _CompositeClassPart {
XtGeometryHandler geometry_manager; /* geometry manager for children */
XtWidgetProc change_managed; /* change managed state of child */
XtWidgetProc insert_child; /* physically add child to parent */
XtWidgetProc delete_child; /* physically remove child */
XtPointer extension; /* pointer to extension record */
} CompositeClassPart,*CompositePartPtr;
typedef struct {
XtPointer next_extension; /* 1st 4 mandated for all extension records */
XrmQuark record_type; /* NULLQUARK; on CompositeClassPart */
long version; /* must be XtCompositeExtensionVersion */
Cardinal record_size; /* sizeof(CompositeClassExtensionRec) */
Boolean accepts_objects;
Boolean allows_change_managed_set;
} CompositeClassExtensionRec, *CompositeClassExtension;
typedef struct _CompositeClassRec {
CoreClassPart core_class;
CompositeClassPart composite_class;
} CompositeClassRec;
externalref CompositeClassRec compositeClassRec;
_XFUNCPROTOEND
#define XtCompositeExtensionVersion 2L
#define XtInheritGeometryManager ((XtGeometryHandler) _XtInherit)
#define XtInheritChangeManaged ((XtWidgetProc) _XtInherit)
#define XtInheritInsertChild ((XtWidgetProc) _XtInherit)
#define XtInheritDeleteChild ((XtWidgetProc) _XtInherit)
#endif /* _XtCompositeP_h */
/* DON'T ADD STUFF AFTER THIS #endif */

View File

@ -0,0 +1,96 @@
/***********************************************************
Copyright 1987, 1988, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
#ifndef _XtConstraintP_h
#define _XtConstraintP_h
#include <X11/Constraint.h>
_XFUNCPROTOBEGIN
typedef struct _ConstraintPart {
XtPointer mumble; /* No new fields, keep C compiler happy */
} ConstraintPart;
typedef struct _ConstraintRec {
CorePart core;
CompositePart composite;
ConstraintPart constraint;
} ConstraintRec, *ConstraintWidget;
typedef struct _ConstraintClassPart {
XtResourceList resources; /* constraint resource list */
Cardinal num_resources; /* number of constraints in list */
Cardinal constraint_size; /* size of constraint record */
XtInitProc initialize; /* constraint initialization */
XtWidgetProc destroy; /* constraint destroy proc */
XtSetValuesFunc set_values; /* constraint set_values proc */
XtPointer extension; /* pointer to extension record */
} ConstraintClassPart;
typedef struct {
XtPointer next_extension; /* 1st 4 mandated for all extension records */
XrmQuark record_type; /* NULLQUARK; on ConstraintClassPart */
long version; /* must be XtConstraintExtensionVersion */
Cardinal record_size; /* sizeof(ConstraintClassExtensionRec) */
XtArgsProc get_values_hook;
} ConstraintClassExtensionRec, *ConstraintClassExtension;
typedef struct _ConstraintClassRec {
CoreClassPart core_class;
CompositeClassPart composite_class;
ConstraintClassPart constraint_class;
} ConstraintClassRec;
externalref ConstraintClassRec constraintClassRec;
_XFUNCPROTOEND
#define XtConstraintExtensionVersion 1L
#endif /* _XtConstraintP_h */
/* DON'T ADD STUFF AFTER THIS #endif */

View File

@ -0,0 +1,62 @@
/***********************************************************
Copyright 1987, 1988, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
#ifndef _XtConstraint_h
#define _XtConstraint_h
_XFUNCPROTOBEGIN
typedef struct _ConstraintClassRec *ConstraintWidgetClass;
#ifndef VMS
externalref WidgetClass constraintWidgetClass;
#endif
_XFUNCPROTOEND
#endif /* _XtConstraint_h */
/* DON'T ADD STUFF AFTER THIS #endif */

View File

@ -0,0 +1,96 @@
/***********************************************************
Copyright 1987, 1988, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
_XFUNCPROTOBEGIN
/* Representation types */
extern XrmQuark _XtQString;
/*
* Resource conversions
*/
typedef struct _ConverterRec **ConverterTable;
extern void _XtAddDefaultConverters(
ConverterTable /* table */
);
extern void _XtSetDefaultConverterTable(
ConverterTable* /* table */
);
extern void _XtFreeConverterTable(
ConverterTable /* table */
);
extern void _XtTableAddConverter(
ConverterTable /* table */,
XrmRepresentation /* from_type */,
XrmRepresentation /* to_type */,
XtTypeConverter /* converter */,
XtConvertArgList /* convert_args */,
Cardinal /* num_args */,
_XtBoolean /* new_style */,
XtCacheType /* cache_type */,
XtDestructor /* destructor */,
_XtBoolean /* global */
);
extern Boolean _XtConvert(
Widget /* widget */,
XrmRepresentation /* from_type */,
XrmValuePtr /* from */,
XrmRepresentation /* to_type */,
XrmValuePtr /* to */,
XtCacheRef* /* cache_ref_return */
);
void _XtConvertInitialize(void);
_XFUNCPROTOEND

View File

@ -0,0 +1,65 @@
/***********************************************************
Copyright 1987, 1988, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
#ifndef _XtCore_h
#define _XtCore_h
_XFUNCPROTOBEGIN
typedef struct _WidgetClassRec *CoreWidgetClass;
typedef struct _WidgetRec *CoreWidget;
externalref WidgetClass coreWidgetClass;
#ifndef VMS
externalref WidgetClass widgetClass;
#endif
_XFUNCPROTOEND
#endif /* _XtCore_h */
/* DON'T ADD STUFF AFTER THIS #endif */

View File

@ -0,0 +1,170 @@
/***********************************************************
Copyright 1987, 1988, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
#ifndef XtCoreP_h
#define XtCoreP_h
#include <X11/Core.h>
_XFUNCPROTOBEGIN
externalref int _XtInheritTranslations;
#define XtInheritTranslations ((String) &_XtInheritTranslations)
#define XtInheritRealize ((XtRealizeProc) _XtInherit)
#define XtInheritResize ((XtWidgetProc) _XtInherit)
#define XtInheritExpose ((XtExposeProc) _XtInherit)
#define XtInheritSetValuesAlmost ((XtAlmostProc) _XtInherit)
#define XtInheritAcceptFocus ((XtAcceptFocusProc) _XtInherit)
#define XtInheritQueryGeometry ((XtGeometryHandler) _XtInherit)
#define XtInheritDisplayAccelerator ((XtStringProc) _XtInherit)
/***************************************************************
* Widget Core Data Structures
*
*
**************************************************************/
typedef struct _CorePart {
Widget self; /* pointer to widget itself */
WidgetClass widget_class; /* pointer to Widget's ClassRec */
Widget parent; /* parent widget */
XrmName xrm_name; /* widget resource name quarkified */
Boolean being_destroyed; /* marked for destroy */
XtCallbackList destroy_callbacks; /* who to call when widget destroyed */
XtPointer constraints; /* constraint record */
Position x, y; /* window position */
Dimension width, height; /* window dimensions */
Dimension border_width; /* window border width */
Boolean managed; /* is widget geometry managed? */
Boolean sensitive; /* is widget sensitive to user events*/
Boolean ancestor_sensitive; /* are all ancestors sensitive? */
XtEventTable event_table; /* private to event dispatcher */
XtTMRec tm; /* translation management */
XtTranslations accelerators; /* accelerator translations */
Pixel border_pixel; /* window border pixel */
Pixmap border_pixmap; /* window border pixmap or NULL */
WidgetList popup_list; /* list of popups */
Cardinal num_popups; /* how many popups */
String name; /* widget resource name */
Screen *screen; /* window's screen */
Colormap colormap; /* colormap */
Window window; /* window ID */
Cardinal depth; /* number of planes in window */
Pixel background_pixel; /* window background pixel */
Pixmap background_pixmap; /* window background pixmap or NULL */
Boolean visible; /* is window mapped and not occluded?*/
Boolean mapped_when_managed;/* map window if it's managed? */
} CorePart;
typedef struct _WidgetRec {
CorePart core;
} WidgetRec, CoreRec;
/******************************************************************
*
* Core Class Structure. Widgets, regardless of their class, will have
* these fields. All widgets of a given class will have the same values
* for these fields. Widgets of a given class may also have additional
* common fields. These additional fields are included in incremental
* class structures, such as CommandClass.
*
* The fields that are specific to this subclass, as opposed to fields that
* are part of the superclass, are called "subclass fields" below. Many
* procedures are responsible only for the subclass fields, and not for
* any superclass fields.
*
********************************************************************/
typedef struct _CoreClassPart {
WidgetClass superclass; /* pointer to superclass ClassRec */
String class_name; /* widget resource class name */
Cardinal widget_size; /* size in bytes of widget record */
XtProc class_initialize; /* class initialization proc */
XtWidgetClassProc class_part_initialize; /* dynamic initialization */
XtEnum class_inited; /* has class been initialized? */
XtInitProc initialize; /* initialize subclass fields */
XtArgsProc initialize_hook; /* notify that initialize called */
XtRealizeProc realize; /* XCreateWindow for widget */
XtActionList actions; /* widget semantics name to proc map */
Cardinal num_actions; /* number of entries in actions */
XtResourceList resources; /* resources for subclass fields */
Cardinal num_resources; /* number of entries in resources */
XrmClass xrm_class; /* resource class quarkified */
Boolean compress_motion; /* compress MotionNotify for widget */
XtEnum compress_exposure; /* compress Expose events for widget*/
Boolean compress_enterleave;/* compress enter and leave events */
Boolean visible_interest; /* select for VisibilityNotify */
XtWidgetProc destroy; /* free data for subclass pointers */
XtWidgetProc resize; /* geom manager changed widget size */
XtExposeProc expose; /* rediplay window */
XtSetValuesFunc set_values; /* set subclass resource values */
XtArgsFunc set_values_hook; /* notify that set_values called */
XtAlmostProc set_values_almost; /* set_values got "Almost" geo reply */
XtArgsProc get_values_hook; /* notify that get_values called */
XtAcceptFocusProc accept_focus; /* assign input focus to widget */
XtVersionType version; /* version of intrinsics used */
XtPointer callback_private; /* list of callback offsets */
String tm_table; /* state machine */
XtGeometryHandler query_geometry; /* return preferred geometry */
XtStringProc display_accelerator;/* display your accelerator */
XtPointer extension; /* pointer to extension record */
} CoreClassPart;
typedef struct _WidgetClassRec {
CoreClassPart core_class;
} WidgetClassRec, CoreClassRec;
externalref WidgetClassRec widgetClassRec;
#define coreClassRec widgetClassRec
_XFUNCPROTOEND
#endif /* _XtCoreP_h */
/* DON'T ADD STUFF AFTER THIS #endif */

View File

@ -0,0 +1,42 @@
#ifndef _XtcreateI_h
#define _XtcreateI_h
_XFUNCPROTOBEGIN
extern Widget _XtCreateWidget(String name, WidgetClass widget_class,
Widget parent, ArgList args, Cardinal num_args,
XtTypedArgList typed_args,
Cardinal num_typed_args);
extern Widget _XtCreatePopupShell(String name, WidgetClass widget_class,
Widget parent, ArgList args,
Cardinal num_args, XtTypedArgList typed_args,
Cardinal num_typed_args);
extern Widget _XtAppCreateShell(String name, String class,
WidgetClass widget_class, Display *display,
ArgList args, Cardinal num_args,
XtTypedArgList typed_args,
Cardinal num_typed_args);
extern Widget _XtCreateHookObj(Screen *screen);
_XFUNCPROTOEND
#include <stdarg.h>
_XFUNCPROTOBEGIN
/* VarCreate.c */
extern Widget _XtVaOpenApplication(XtAppContext *app_context_return,
_Xconst char* application_class,
XrmOptionDescList options, Cardinal num_options,
int *argc_in_out, String *argv_in_out,
String *fallback_resources, WidgetClass widget_class,
va_list var_args);
extern Widget _XtVaAppInitialize(XtAppContext *app_context_return,
_Xconst char* application_class,
XrmOptionDescList options, Cardinal num_options,
int *argc_in_out, String *argv_in_out,
String *fallback_resources, va_list var_args);
_XFUNCPROTOEND
#endif /* _XtcreateI_h */

View File

@ -0,0 +1,65 @@
/***********************************************************
Copyright 1988, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
/*
* DEC private keysyms
* (29th bit set)
*/
/* two-key compose sequence initiators, chosen to map to Latin1 characters */
#define DXK_ring_accent 0x1000FEB0
#define DXK_circumflex_accent 0x1000FE5E
#define DXK_cedilla_accent 0x1000FE2C
#define DXK_acute_accent 0x1000FE27
#define DXK_grave_accent 0x1000FE60
#define DXK_tilde 0x1000FE7E
#define DXK_diaeresis 0x1000FE22
/* special keysym for LK2** "Remove" key on editing keypad */
#define DXK_Remove 0x1000FF00 /* Remove */

View File

@ -0,0 +1,134 @@
/***********************************************************
Copyright 1987, 1988, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
/*
* Event.h - exported types and functions for toolkit event handler
*
* Author: Charles Haynes
* Digital Equipment Corporation
* Western Software Laboratory
* Date: Sun Dec 6 1987
*/
#ifndef _Event_h_
#define _Event_h_
typedef struct _XtGrabRec *XtGrabList;
#include "PassivGraI.h"
_XFUNCPROTOBEGIN
extern void _XtEventInitialize(
void
);
typedef struct _XtEventRec {
XtEventTable next;
EventMask mask; /* also select_data count for RecExt */
XtEventHandler proc;
XtPointer closure;
unsigned int select:1;
unsigned int has_type_specifier:1;
unsigned int async:1; /* not used, here for Digital extension? */
} XtEventRec;
typedef struct _XtGrabRec {
XtGrabList next;
Widget widget;
unsigned int exclusive:1;
unsigned int spring_loaded:1;
}XtGrabRec;
typedef struct _BlockHookRec {
struct _BlockHookRec* next;
XtAppContext app;
XtBlockHookProc proc;
XtPointer closure;
} BlockHookRec, *BlockHook;
extern void _XtFreeEventTable(
XtEventTable* /* event_table */
);
extern Boolean _XtOnGrabList(
Widget /* widget */,
XtGrabRec* /* grabList */
);
extern void _XtRemoveAllInputs(
XtAppContext /* app */
);
extern void _XtRefreshMapping(
XEvent* /* event */,
_XtBoolean /* dispatch */
);
extern void _XtSendFocusEvent(
Widget /* child */,
int /* type */);
extern EventMask _XtConvertTypeToMask(
int /* eventType */
);
/* EventUtil.c */
extern Widget _XtFindRemapWidget(XEvent *event, Widget widget,
EventMask mask, XtPerDisplayInput pdi);
extern void _XtUngrabBadGrabs(XEvent *event, Widget widget,
EventMask mask, XtPerDisplayInput pdi);
extern void _XtFillAncestorList(Widget **listPtr, int *maxElemsPtr,
int *numElemsPtr, Widget start,
Widget breakWidget);
/* NextEvent.c */
extern Boolean XtAppPeekEvent_SkipTimer;
_XFUNCPROTOEND
#endif /* _Event_h_ */

View File

@ -0,0 +1,164 @@
/*
Copyright 1987, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall
not be used in advertising or otherwise to promote the sale, use or
other dealings in this Software without prior written authorization
from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the names of Hewlett Packard
or Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
HEWLETT-PACKARD MAKES NO WARRANTY OF ANY KIND WITH REGARD
TO THIS SOFWARE, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. Hewlett-Packard shall not be liable for errors
contained herein or direct, indirect, special, incidental or
consequential damages in connection with the furnishing,
performance, or use of this material.
*/
#ifndef _HPKEYSYM_H
#define _HPKEYSYM_H
#define hpXK_ClearLine 0x1000FF6F
#define hpXK_InsertLine 0x1000FF70
#define hpXK_DeleteLine 0x1000FF71
#define hpXK_InsertChar 0x1000FF72
#define hpXK_DeleteChar 0x1000FF73
#define hpXK_BackTab 0x1000FF74
#define hpXK_KP_BackTab 0x1000FF75
#define hpXK_Modelock1 0x1000FF48
#define hpXK_Modelock2 0x1000FF49
#define hpXK_Reset 0x1000FF6C
#define hpXK_System 0x1000FF6D
#define hpXK_User 0x1000FF6E
#define hpXK_mute_acute 0x100000A8
#define hpXK_mute_grave 0x100000A9
#define hpXK_mute_asciicircum 0x100000AA
#define hpXK_mute_diaeresis 0x100000AB
#define hpXK_mute_asciitilde 0x100000AC
#define hpXK_lira 0x100000AF
#define hpXK_guilder 0x100000BE
#define hpXK_Ydiaeresis 0x100000EE
#define hpXK_IO 0x100000EE
#define hpXK_longminus 0x100000F6
#define hpXK_block 0x100000FC
#ifndef _OSF_Keysyms
#define _OSF_Keysyms
#define osfXK_Copy 0x1004FF02
#define osfXK_Cut 0x1004FF03
#define osfXK_Paste 0x1004FF04
#define osfXK_BackTab 0x1004FF07
#define osfXK_BackSpace 0x1004FF08
#define osfXK_Clear 0x1004FF0B
#define osfXK_Escape 0x1004FF1B
#define osfXK_AddMode 0x1004FF31
#define osfXK_PrimaryPaste 0x1004FF32
#define osfXK_QuickPaste 0x1004FF33
#define osfXK_PageLeft 0x1004FF40
#define osfXK_PageUp 0x1004FF41
#define osfXK_PageDown 0x1004FF42
#define osfXK_PageRight 0x1004FF43
#define osfXK_Activate 0x1004FF44
#define osfXK_MenuBar 0x1004FF45
#define osfXK_Left 0x1004FF51
#define osfXK_Up 0x1004FF52
#define osfXK_Right 0x1004FF53
#define osfXK_Down 0x1004FF54
#define osfXK_EndLine 0x1004FF57
#define osfXK_BeginLine 0x1004FF58
#define osfXK_EndData 0x1004FF59
#define osfXK_BeginData 0x1004FF5A
#define osfXK_PrevMenu 0x1004FF5B
#define osfXK_NextMenu 0x1004FF5C
#define osfXK_PrevField 0x1004FF5D
#define osfXK_NextField 0x1004FF5E
#define osfXK_Select 0x1004FF60
#define osfXK_Insert 0x1004FF63
#define osfXK_Undo 0x1004FF65
#define osfXK_Menu 0x1004FF67
#define osfXK_Cancel 0x1004FF69
#define osfXK_Help 0x1004FF6A
#define osfXK_SelectAll 0x1004FF71
#define osfXK_DeselectAll 0x1004FF72
#define osfXK_Reselect 0x1004FF73
#define osfXK_Extend 0x1004FF74
#define osfXK_Restore 0x1004FF78
#define osfXK_Delete 0x1004FFFF
#endif /* _OSF_Keysyms */
/**************************************************************
* The use of the following macros is deprecated.
* They are listed below only for backwards compatibility.
*/
#define XK_Reset 0x1000FF6C
#define XK_System 0x1000FF6D
#define XK_User 0x1000FF6E
#define XK_ClearLine 0x1000FF6F
#define XK_InsertLine 0x1000FF70
#define XK_DeleteLine 0x1000FF71
#define XK_InsertChar 0x1000FF72
#define XK_DeleteChar 0x1000FF73
#define XK_BackTab 0x1000FF74
#define XK_KP_BackTab 0x1000FF75
#define XK_Ext16bit_L 0x1000FF76
#define XK_Ext16bit_R 0x1000FF77
#define XK_mute_acute 0x100000a8
#define XK_mute_grave 0x100000a9
#define XK_mute_asciicircum 0x100000aa
#define XK_mute_diaeresis 0x100000ab
#define XK_mute_asciitilde 0x100000ac
#define XK_lira 0x100000af
#define XK_guilder 0x100000be
#ifndef XK_Ydiaeresis
#define XK_Ydiaeresis 0x100000ee
#endif
#define XK_IO 0x100000ee
#define XK_longminus 0x100000f6
#define XK_block 0x100000fc
#endif /* _HPKEYSYM_H */

View File

@ -0,0 +1,73 @@
/*
Copyright 1994, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
#ifndef _XtHookObjI_h
#define _XtHookObjI_h
_XFUNCPROTOBEGIN
/* This object is implementation-dependent and private to the library. */
typedef struct _HookObjRec *HookObject;
typedef struct _HookObjClassRec *HookObjectClass;
externalref WidgetClass hookObjectClass;
typedef struct _HookObjPart {
/* resources */
XtCallbackList createhook_callbacks;
XtCallbackList changehook_callbacks;
XtCallbackList confighook_callbacks;
XtCallbackList geometryhook_callbacks;
XtCallbackList destroyhook_callbacks;
WidgetList shells;
Cardinal num_shells;
/* private data */
Cardinal max_shells;
Screen* screen;
}HookObjPart;
typedef struct _HookObjRec {
ObjectPart object;
HookObjPart hooks;
} HookObjRec;
typedef struct _HookObjClassPart {
int unused;
} HookObjClassPart;
typedef struct _HookObjClassRec {
ObjectClassPart object_class;
HookObjClassPart hook_class;
} HookObjClassRec;
externalref HookObjClassRec hookObjClassRec;
_XFUNCPROTOEND
#endif /* ifndef _Xt_HookObjI_h */

View File

@ -0,0 +1,101 @@
/******************************************************************************
Copyright 1993, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Author: Ralph Mor, X Consortium
******************************************************************************/
#ifndef _ICE_H_
#define _ICE_H_
/*
* Protocol Version
*/
#define IceProtoMajor 1
#define IceProtoMinor 0
/*
* Byte Order
*/
#define IceLSBfirst 0
#define IceMSBfirst 1
/*
* ICE minor opcodes
*/
#define ICE_Error 0
#define ICE_ByteOrder 1
#define ICE_ConnectionSetup 2
#define ICE_AuthRequired 3
#define ICE_AuthReply 4
#define ICE_AuthNextPhase 5
#define ICE_ConnectionReply 6
#define ICE_ProtocolSetup 7
#define ICE_ProtocolReply 8
#define ICE_Ping 9
#define ICE_PingReply 10
#define ICE_WantToClose 11
#define ICE_NoClose 12
/*
* Error severity
*/
#define IceCanContinue 0
#define IceFatalToProtocol 1
#define IceFatalToConnection 2
/*
* ICE error classes that are common to all protocols
*/
#define IceBadMinor 0x8000
#define IceBadState 0x8001
#define IceBadLength 0x8002
#define IceBadValue 0x8003
/*
* ICE error classes that are specific to the ICE protocol
*/
#define IceBadMajor 0
#define IceNoAuth 1
#define IceNoVersion 2
#define IceSetupFailed 3
#define IceAuthRejected 4
#define IceAuthFailed 5
#define IceProtocolDuplicate 6
#define IceMajorOpcodeDuplicate 7
#define IceUnknownProtocol 8
#endif /* _ICE_H_ */

View File

@ -0,0 +1,250 @@
/******************************************************************************
Copyright 1993, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Author: Ralph Mor, X Consortium
******************************************************************************/
#ifndef _ICECONN_H_
#define _ICECONN_H_
#include <X11/ICE/ICElib.h>
/*
* Data structures for ICE connection object
*/
typedef struct _IceSavedReplyWait {
IceReplyWaitInfo *reply_wait;
Bool reply_ready;
struct _IceSavedReplyWait *next;
} _IceSavedReplyWait;
typedef struct _IcePingWait {
IcePingReplyProc ping_reply_proc;
IcePointer client_data;
struct _IcePingWait *next;
} _IcePingWait;
typedef struct {
char *vendor;
char *release;
int version_count;
IcePoVersionRec *version_recs;
int auth_count;
char **auth_names;
IcePoAuthProc *auth_procs;
IceIOErrorProc io_error_proc;
} _IcePoProtocol;
typedef struct {
char *vendor;
char *release;
int version_count;
IcePaVersionRec *version_recs;
IceProtocolSetupProc protocol_setup_proc;
IceProtocolActivateProc protocol_activate_proc;
int auth_count;
char **auth_names;
IcePaAuthProc *auth_procs;
IceHostBasedAuthProc host_based_auth_proc;
IceIOErrorProc io_error_proc;
} _IcePaProtocol;
typedef struct {
char *protocol_name;
_IcePoProtocol *orig_client;
_IcePaProtocol *accept_client;
} _IceProtocol;
typedef struct {
Bool in_use;
int my_opcode;
_IceProtocol *protocol;
IcePointer client_data;
Bool accept_flag;
union {
IcePaProcessMsgProc accept_client;
IcePoProcessMsgProc orig_client;
} process_msg_proc;
} _IceProcessMsgInfo;
typedef struct {
int his_version_index;
int my_version_index;
char *his_vendor;
char *his_release;
char my_auth_index;
IcePointer my_auth_state;
Bool must_authenticate;
} _IceConnectToMeInfo;
typedef struct {
int his_opcode;
int my_opcode;
int his_version_index;
int my_version_index;
char *his_vendor;
char *his_release;
char my_auth_index;
IcePointer my_auth_state;
Bool must_authenticate;
} _IceProtoSetupToMeInfo;
typedef struct {
Bool auth_active;
char my_auth_index;
IcePointer my_auth_state;
} _IceConnectToYouInfo;
typedef struct {
int my_opcode;
int my_auth_count;
int *my_auth_indices;
Bool auth_active;
char my_auth_index;
IcePointer my_auth_state;
} _IceProtoSetupToYouInfo;
struct _IceConn {
unsigned int io_ok : 1; /* did an IO error occur? */
unsigned int swap : 1; /* do we need to swap on reads? */
unsigned int waiting_for_byteorder : 1; /* waiting for a ByteOrder msg? */
unsigned int skip_want_to_close : 1; /* avoid shutdown negotiation? */
unsigned int want_to_close : 1; /* did we send a WantToClose? */
unsigned int free_asap : 1; /* free as soon as possible */
unsigned int unused1 : 2; /* future use */
unsigned int unused2 : 8; /* future use */
IceConnectStatus connection_status; /* pending, accepted, rejected */
unsigned char my_ice_version_index; /* which version are we using? */
struct _XtransConnInfo *trans_conn; /* transport connection object */
unsigned long send_sequence; /* Sequence # of last msg sent */
unsigned long receive_sequence; /* Sequence # of last msg received */
char *connection_string; /* network connection string */
char *vendor; /* other client's vendor */
char *release; /* other client's release */
char *inbuf; /* Input buffer starting address */
char *inbufptr; /* Input buffer index pointer */
char *inbufmax; /* Input buffer maximum+1 address */
char *outbuf; /* Output buffer starting address */
char *outbufptr; /* Output buffer index pointer */
char *outbufmax; /* Output buffer maximum+1 address */
char *scratch; /* scratch buffer */
unsigned long scratch_size; /* scratch size */
int dispatch_level; /* IceProcessMessages dispatch level */
IcePointer context; /* context associated with caller
of IceOpenConnection */
/*
* Before we read a message, the major opcode of the message must be
* mapped to our corresponding major opcode (the two clients can use
* different opcodes for the same protocol). In order to save space,
* we keep track of the mininum and maximum major opcodes used by the
* other client. To get the information on how to process this message,
* we do the following...
*
* processMsgInfo = iceConn->process_msg_info[
* message->majorOpcode - iceConn->his_min_opcode]
*
* Note that the number of elements in the iceConn->process_msg_info
* array is always (iceConn->his_max_opcode - iceConn->his_min_opcode + 1).
* We check process_msg_info->in_use to see if the opcode is being used.
*/
_IceProcessMsgInfo *process_msg_info;
char his_min_opcode; /* [1..255] */
char his_max_opcode; /* [1..255] */
/*
* Number of times this iceConn was returned in IceOpenConnection
* or IceAcceptConnection.
*/
unsigned char open_ref_count;
/*
* Number of active protocols.
*/
unsigned char proto_ref_count;
/*
* If this ICE connection was created with IceAcceptConnection,
* the listen_obj field is set to the listen object. Otherwise,
* the listen_obj field is NULL.
*/
IceListenObj listen_obj;
/*
* We need to keep track of all the replies we're waiting for.
* Check the comments in process.c for how this works.
*/
_IceSavedReplyWait *saved_reply_waits;
/*
* We keep track of all Pings sent from the client. When the Ping reply
* arrives, we remove it from the list.
*/
_IcePingWait *ping_waits;
/*
* Some state for a client doing a Connection/Protocol Setup
*/
_IceConnectToYouInfo *connect_to_you;
_IceProtoSetupToYouInfo *protosetup_to_you;
/*
* Some state for a client receiving a Connection/Protocol Setup
*/
_IceConnectToMeInfo *connect_to_me;
_IceProtoSetupToMeInfo *protosetup_to_me;
};
#endif /* _ICECONN_H_ */

View File

@ -0,0 +1,431 @@
/******************************************************************************
Copyright 1993, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Author: Ralph Mor, X Consortium
******************************************************************************/
#ifndef _ICELIB_H_
#define _ICELIB_H_
#include <X11/ICE/ICE.h>
#include <X11/Xfuncproto.h>
#define Bool int
#define Status int
#define True 1
#define False 0
typedef void *IcePointer;
typedef enum {
IcePoAuthHaveReply,
IcePoAuthRejected,
IcePoAuthFailed,
IcePoAuthDoneCleanup
} IcePoAuthStatus;
typedef enum {
IcePaAuthContinue,
IcePaAuthAccepted,
IcePaAuthRejected,
IcePaAuthFailed
} IcePaAuthStatus;
typedef enum {
IceConnectPending,
IceConnectAccepted,
IceConnectRejected,
IceConnectIOError
} IceConnectStatus;
typedef enum {
IceProtocolSetupSuccess,
IceProtocolSetupFailure,
IceProtocolSetupIOError,
IceProtocolAlreadyActive
} IceProtocolSetupStatus;
typedef enum {
IceAcceptSuccess,
IceAcceptFailure,
IceAcceptBadMalloc
} IceAcceptStatus;
typedef enum {
IceClosedNow,
IceClosedASAP,
IceConnectionInUse,
IceStartedShutdownNegotiation
} IceCloseStatus;
typedef enum {
IceProcessMessagesSuccess,
IceProcessMessagesIOError,
IceProcessMessagesConnectionClosed
} IceProcessMessagesStatus;
typedef struct {
unsigned long sequence_of_request;
int major_opcode_of_request;
int minor_opcode_of_request;
IcePointer reply;
} IceReplyWaitInfo;
typedef struct _IceConn *IceConn;
typedef struct _IceListenObj *IceListenObj;
typedef void (*IceWatchProc) (
IceConn /* iceConn */,
IcePointer /* clientData */,
Bool /* opening */,
IcePointer * /* watchData */
);
typedef void (*IcePoProcessMsgProc) (
IceConn /* iceConn */,
IcePointer /* clientData */,
int /* opcode */,
unsigned long /* length */,
Bool /* swap */,
IceReplyWaitInfo * /* replyWait */,
Bool * /* replyReadyRet */
);
typedef void (*IcePaProcessMsgProc) (
IceConn /* iceConn */,
IcePointer /* clientData */,
int /* opcode */,
unsigned long /* length */,
Bool /* swap */
);
typedef struct {
int major_version;
int minor_version;
IcePoProcessMsgProc process_msg_proc;
} IcePoVersionRec;
typedef struct {
int major_version;
int minor_version;
IcePaProcessMsgProc process_msg_proc;
} IcePaVersionRec;
typedef IcePoAuthStatus (*IcePoAuthProc) (
IceConn /* iceConn */,
IcePointer * /* authStatePtr */,
Bool /* cleanUp */,
Bool /* swap */,
int /* authDataLen */,
IcePointer /* authData */,
int * /* replyDataLenRet */,
IcePointer * /* replyDataRet */,
char ** /* errorStringRet */
);
typedef IcePaAuthStatus (*IcePaAuthProc) (
IceConn /* iceConn */,
IcePointer * /* authStatePtr */,
Bool /* swap */,
int /* authDataLen */,
IcePointer /* authData */,
int * /* replyDataLenRet */,
IcePointer * /* replyDataRet */,
char ** /* errorStringRet */
);
typedef Bool (*IceHostBasedAuthProc) (
char * /* hostName */
);
typedef Status (*IceProtocolSetupProc) (
IceConn /* iceConn */,
int /* majorVersion */,
int /* minorVersion */,
char * /* vendor */,
char * /* release */,
IcePointer * /* clientDataRet */,
char ** /* failureReasonRet */
);
typedef void (*IceProtocolActivateProc) (
IceConn /* iceConn */,
IcePointer /* clientData */
);
typedef void (*IceIOErrorProc) (
IceConn /* iceConn */
);
typedef void (*IcePingReplyProc) (
IceConn /* iceConn */,
IcePointer /* clientData */
);
typedef void (*IceErrorHandler) (
IceConn /* iceConn */,
Bool /* swap */,
int /* offendingMinorOpcode */,
unsigned long /* offendingSequence */,
int /* errorClass */,
int /* severity */,
IcePointer /* values */
);
typedef void (*IceIOErrorHandler) (
IceConn /* iceConn */
);
/*
* Function prototypes
*/
_XFUNCPROTOBEGIN
extern int IceRegisterForProtocolSetup (
const char * /* protocolName */,
const char * /* vendor */,
const char * /* release */,
int /* versionCount */,
IcePoVersionRec * /* versionRecs */,
int /* authCount */,
const char ** /* authNames */,
IcePoAuthProc * /* authProcs */,
IceIOErrorProc /* IOErrorProc */
);
extern int IceRegisterForProtocolReply (
const char * /* protocolName */,
const char * /* vendor */,
const char * /* release */,
int /* versionCount */,
IcePaVersionRec * /* versionRecs */,
int /* authCount */,
const char ** /* authNames */,
IcePaAuthProc * /* authProcs */,
IceHostBasedAuthProc /* hostBasedAuthProc */,
IceProtocolSetupProc /* protocolSetupProc */,
IceProtocolActivateProc /* protocolActivateProc */,
IceIOErrorProc /* IOErrorProc */
);
extern IceConn IceOpenConnection (
char * /* networkIdsList */,
IcePointer /* context */,
Bool /* mustAuthenticate */,
int /* majorOpcodeCheck */,
int /* errorLength */,
char * /* errorStringRet */
);
extern IcePointer IceGetConnectionContext (
IceConn /* iceConn */
);
extern Status IceListenForConnections (
int * /* countRet */,
IceListenObj ** /* listenObjsRet */,
int /* errorLength */,
char * /* errorStringRet */
);
extern Status IceListenForWellKnownConnections (
char * /* port */,
int * /* countRet */,
IceListenObj ** /* listenObjsRet */,
int /* errorLength */,
char * /* errorStringRet */
);
extern int IceGetListenConnectionNumber (
IceListenObj /* listenObj */
);
extern char *IceGetListenConnectionString (
IceListenObj /* listenObj */
);
extern char *IceComposeNetworkIdList (
int /* count */,
IceListenObj * /* listenObjs */
);
extern void IceFreeListenObjs (
int /* count */,
IceListenObj * /* listenObjs */
);
extern void IceSetHostBasedAuthProc (
IceListenObj /* listenObj */,
IceHostBasedAuthProc /* hostBasedAuthProc */
);
extern IceConn IceAcceptConnection (
IceListenObj /* listenObj */,
IceAcceptStatus * /* statusRet */
);
extern void IceSetShutdownNegotiation (
IceConn /* iceConn */,
Bool /* negotiate */
);
extern Bool IceCheckShutdownNegotiation (
IceConn /* iceConn */
);
extern IceCloseStatus IceCloseConnection (
IceConn /* iceConn */
);
extern Status IceAddConnectionWatch (
IceWatchProc /* watchProc */,
IcePointer /* clientData */
);
extern void IceRemoveConnectionWatch (
IceWatchProc /* watchProc */,
IcePointer /* clientData */
);
extern IceProtocolSetupStatus IceProtocolSetup (
IceConn /* iceConn */,
int /* myOpcode */,
IcePointer /* clientData */,
Bool /* mustAuthenticate */,
int * /* majorVersionRet */,
int * /* minorVersionRet */,
char ** /* vendorRet */,
char ** /* releaseRet */,
int /* errorLength */,
char * /* errorStringRet */
);
extern Status IceProtocolShutdown (
IceConn /* iceConn */,
int /* majorOpcode */
);
extern IceProcessMessagesStatus IceProcessMessages (
IceConn /* iceConn */,
IceReplyWaitInfo * /* replyWait */,
Bool * /* replyReadyRet */
);
extern Status IcePing (
IceConn /* iceConn */,
IcePingReplyProc /* pingReplyProc */,
IcePointer /* clientData */
);
extern char *IceAllocScratch (
IceConn /* iceConn */,
unsigned long /* size */
);
extern int IceFlush (
IceConn /* iceConn */
);
extern int IceGetOutBufSize (
IceConn /* iceConn */
);
extern int IceGetInBufSize (
IceConn /* iceConn */
);
extern IceConnectStatus IceConnectionStatus (
IceConn /* iceConn */
);
extern char *IceVendor (
IceConn /* iceConn */
);
extern char *IceRelease (
IceConn /* iceConn */
);
extern int IceProtocolVersion (
IceConn /* iceConn */
);
extern int IceProtocolRevision (
IceConn /* iceConn */
);
extern int IceConnectionNumber (
IceConn /* iceConn */
);
extern char *IceConnectionString (
IceConn /* iceConn */
);
extern unsigned long IceLastSentSequenceNumber (
IceConn /* iceConn */
);
extern unsigned long IceLastReceivedSequenceNumber (
IceConn /* iceConn */
);
extern Bool IceSwapping (
IceConn /* iceConn */
);
extern IceErrorHandler IceSetErrorHandler (
IceErrorHandler /* handler */
);
extern IceIOErrorHandler IceSetIOErrorHandler (
IceIOErrorHandler /* handler */
);
extern char *IceGetPeerName (
IceConn /* iceConn */
);
/*
* Multithread Routines
*/
extern Status IceInitThreads (
void
);
extern void IceAppLockConn (
IceConn /* iceConn */
);
extern void IceAppUnlockConn (
IceConn /* iceConn */
);
_XFUNCPROTOEND
#endif /* _ICELIB_H_ */

View File

@ -0,0 +1,300 @@
/******************************************************************************
Copyright 1993, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Author: Ralph Mor, X Consortium
******************************************************************************/
#ifndef _ICEMSG_H_
#define _ICEMSG_H_
#include <X11/Xfuncproto.h>
#include <X11/ICE/ICEconn.h>
_XFUNCPROTOBEGIN
/*
* Function prototypes for internal ICElib functions
*/
extern Status _IceRead (
IceConn /* iceConn */,
unsigned long /* nbytes */,
char * /* ptr */
);
extern void _IceReadSkip (
IceConn /* iceConn */,
unsigned long /* nbytes */
);
extern void _IceWrite (
IceConn /* iceConn */,
unsigned long /* nbytes */,
char * /* ptr */
);
extern void _IceErrorBadMinor (
IceConn /* iceConn */,
int /* majorOpcode */,
int /* offendingMinor */,
int /* severity */
);
extern void _IceErrorBadState (
IceConn /* iceConn */,
int /* majorOpcode */,
int /* offendingMinor */,
int /* severity */
);
extern void _IceErrorBadLength (
IceConn /* iceConn */,
int /* majorOpcode */,
int /* offendingMinor */,
int /* severity */
);
extern void _IceErrorBadValue (
IceConn /* iceConn */,
int /* majorOpcode */,
int /* offendingMinor */,
int /* offset */,
int /* length */,
IcePointer /* value */
);
extern IcePoAuthStatus _IcePoMagicCookie1Proc (
IceConn /* iceConn */,
IcePointer * /* authStatePtr */,
Bool /* cleanUp */,
Bool /* swap */,
int /* authDataLen */,
IcePointer /* authData */,
int * /* replyDataLenRet */,
IcePointer * /* replyDataRet */,
char ** /* errorStringRet */
);
extern IcePaAuthStatus _IcePaMagicCookie1Proc (
IceConn /* iceConn */,
IcePointer * /* authStatePtr */,
Bool /* swap */,
int /* authDataLen */,
IcePointer /* authData */,
int * /* replyDataLenRet */,
IcePointer * /* replyDataRet */,
char ** /* errorStringRet */
);
/*
* Macro to check if IO operations are valid on an ICE connection.
*/
#define IceValidIO(_iceConn) _iceConn->io_ok
/*
* Macros for writing messages.
*/
#define IceGetHeader(_iceConn, _major, _minor, _headerSize, _msgType, _pMsg) \
if ((_iceConn->outbufptr + _headerSize) > _iceConn->outbufmax) \
IceFlush (_iceConn); \
_pMsg = (_msgType *) _iceConn->outbufptr; \
_pMsg->majorOpcode = _major; \
_pMsg->minorOpcode = _minor; \
_pMsg->length = (_headerSize - SIZEOF (iceMsg)) >> 3; \
_iceConn->outbufptr += _headerSize; \
_iceConn->send_sequence++
#define IceGetHeaderExtra(_iceConn, _major, _minor, _headerSize, _extra, _msgType, _pMsg, _pData) \
if ((_iceConn->outbufptr + \
_headerSize + ((_extra) << 3)) > _iceConn->outbufmax) \
IceFlush (_iceConn); \
_pMsg = (_msgType *) _iceConn->outbufptr; \
if ((_iceConn->outbufptr + \
_headerSize + ((_extra) << 3)) <= _iceConn->outbufmax) \
_pData = (char *) _pMsg + _headerSize; \
else \
_pData = NULL; \
_pMsg->majorOpcode = _major; \
_pMsg->minorOpcode = _minor; \
_pMsg->length = ((_headerSize - SIZEOF (iceMsg)) >> 3) + (_extra); \
_iceConn->outbufptr += (_headerSize + ((_extra) << 3)); \
_iceConn->send_sequence++
#define IceSimpleMessage(_iceConn, _major, _minor) \
{ \
iceMsg *_pMsg; \
IceGetHeader (_iceConn, _major, _minor, SIZEOF (iceMsg), iceMsg, _pMsg); \
}
#define IceErrorHeader(_iceConn, _offendingMajorOpcode, _offendingMinorOpcode, _offendingSequenceNum, _severity, _errorClass, _dataLength) \
{ \
iceErrorMsg *_pMsg; \
\
IceGetHeader (_iceConn, _offendingMajorOpcode, ICE_Error, \
SIZEOF (iceErrorMsg), iceErrorMsg, _pMsg); \
_pMsg->length += (_dataLength); \
_pMsg->offendingMinorOpcode = (CARD8) _offendingMinorOpcode; \
_pMsg->severity = (CARD8) _severity; \
_pMsg->offendingSequenceNum = (CARD32) _offendingSequenceNum; \
_pMsg->errorClass = (CARD16) _errorClass; \
}
/*
* Write data into the ICE output buffer.
*/
#define IceWriteData(_iceConn, _bytes, _data) \
{ \
if ((_iceConn->outbufptr + (_bytes)) > _iceConn->outbufmax) \
{ \
IceFlush (_iceConn); \
_IceWrite (_iceConn, (unsigned long) (_bytes), _data); \
} \
else \
{ \
memcpy (_iceConn->outbufptr, _data, _bytes); \
_iceConn->outbufptr += (_bytes); \
} \
}
#define IceWriteData16(_iceConn, _bytes, _data) \
IceWriteData (_iceConn, _bytes, (char *) _data)
#define IceWriteData32(_iceConn, _bytes, _data) \
IceWriteData (_iceConn, _bytes, (char *) _data)
/*
* The IceSendData macro bypasses copying the data to the
* ICE connection buffer and sends the data directly. If necessary,
* the ICE connection buffer is first flushed.
*/
#define IceSendData(_iceConn, _bytes, _data) \
{ \
if (_iceConn->outbufptr > _iceConn->outbuf) \
IceFlush (_iceConn); \
_IceWrite (_iceConn, (unsigned long) (_bytes), _data); \
}
/*
* Write pad bytes. Used to force 32 or 64 bit alignment.
* A maximum of 7 pad bytes can be specified.
*/
#define IceWritePad(_iceConn, _bytes) \
{ \
if ((_iceConn->outbufptr + (_bytes)) > _iceConn->outbufmax) \
{ \
char _dummy[7] = { 0 }; \
IceFlush (_iceConn); \
_IceWrite (_iceConn, (unsigned long) (_bytes), _dummy); \
} \
else \
{ \
_iceConn->outbufptr += (_bytes); \
} \
}
/*
* Macros for reading messages.
*/
#define IceReadCompleteMessage(_iceConn, _headerSize, _msgType, _pMsg, _pData)\
{ \
unsigned long _bytes; \
IceReadMessageHeader (_iceConn, _headerSize, _msgType, _pMsg); \
_bytes = (_pMsg->length << 3) - (_headerSize - SIZEOF (iceMsg)); \
if ((_iceConn->inbufmax - _iceConn->inbufptr) >= _bytes) \
{ \
_IceRead (_iceConn, _bytes, _iceConn->inbufptr); \
_pData = _iceConn->inbufptr; \
_iceConn->inbufptr += _bytes; \
} \
else \
{ \
_pData = malloc (_bytes); \
if (_pData) \
_IceRead (_iceConn, _bytes, _pData); \
else \
_IceReadSkip (_iceConn, _bytes); \
} \
}
#define IceDisposeCompleteMessage(_iceConn, _pData) \
if ((char *) _pData < _iceConn->inbuf || \
(char *) _pData >= _iceConn->inbufmax) \
free (_pData);
#define IceReadSimpleMessage(_iceConn, _msgType, _pMsg) \
_pMsg = (_msgType *) (_iceConn->inbuf);
#define IceReadMessageHeader(_iceConn, _headerSize, _msgType, _pMsg) \
{ \
_IceRead (_iceConn, \
(unsigned long) (_headerSize - SIZEOF (iceMsg)), \
_iceConn->inbufptr); \
_pMsg = (_msgType *) (_iceConn->inbuf); \
_iceConn->inbufptr += (_headerSize - SIZEOF (iceMsg)); \
}
#define IceReadData(_iceConn, _bytes, _pData) \
_IceRead (_iceConn, (unsigned long) (_bytes), (char *) _pData); \
#define IceReadData16(_iceConn, _swap, _bytes, _pData) \
{ \
_IceRead (_iceConn, (unsigned long) (_bytes), (char *) _pData); \
}
#define IceReadData32(_iceConn, _swap, _bytes, _pData) \
{ \
_IceRead (_iceConn, (unsigned long) (_bytes), (char *) _pData); \
}
/*
* Read pad bytes (for 32 or 64 bit alignment).
* A maxium of 7 pad bytes can be specified.
*/
#define IceReadPad(_iceConn, _bytes) \
{ \
char _dummy[7]; \
_IceRead (_iceConn, (unsigned long) (_bytes), _dummy); \
}
_XFUNCPROTOEND
#endif /* _ICEMSG_H_ */

View File

@ -0,0 +1,175 @@
/******************************************************************************
Copyright 1993, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Author: Ralph Mor, X Consortium
******************************************************************************/
#ifndef _ICEPROTO_H_
#define _ICEPROTO_H_
#include <X11/Xmd.h>
typedef struct {
CARD8 majorOpcode;
CARD8 minorOpcode;
CARD8 data[2];
CARD32 length B32;
} iceMsg;
typedef struct {
CARD8 majorOpcode;
CARD8 minorOpcode;
CARD16 errorClass B16;
CARD32 length B32;
CARD8 offendingMinorOpcode;
CARD8 severity;
CARD16 unused B16;
CARD32 offendingSequenceNum B32;
/* n varying values */
/* p p = pad (n, 8) */
} iceErrorMsg;
typedef struct {
CARD8 majorOpcode;
CARD8 minorOpcode;
CARD8 byteOrder;
CARD8 unused;
CARD32 length B32;
} iceByteOrderMsg;
typedef struct {
CARD8 majorOpcode;
CARD8 minorOpcode;
CARD8 versionCount;
CARD8 authCount;
CARD32 length B32;
CARD8 mustAuthenticate;
CARD8 unused[7];
/* i STRING vendor */
/* j STRING release */
/* k LIST of STRING authentication-protocol-names */
/* m LIST of VERSION version-list */
/* p p = pad (i+j+k+m, 8) */
} iceConnectionSetupMsg;
typedef struct {
CARD8 majorOpcode;
CARD8 minorOpcode;
CARD8 authIndex;
CARD8 unused1;
CARD32 length B32;
CARD16 authDataLength B16;
CARD8 unused2[6];
/* n varying data */
/* p p = pad (n, 8) */
} iceAuthRequiredMsg;
typedef struct {
CARD8 majorOpcode;
CARD8 minorOpcode;
CARD8 unused1[2];
CARD32 length B32;
CARD16 authDataLength B16;
CARD8 unused2[6];
/* n varying data */
/* p p = pad (n, 8) */
} iceAuthReplyMsg;
typedef struct {
CARD8 majorOpcode;
CARD8 minorOpcode;
CARD8 unused1[2];
CARD32 length B32;
CARD16 authDataLength B16;
CARD8 unused2[6];
/* n varying data */
/* p p = pad (n, 8) */
} iceAuthNextPhaseMsg;
typedef struct {
CARD8 majorOpcode;
CARD8 minorOpcode;
CARD8 versionIndex;
CARD8 unused;
CARD32 length B32;
/* i STRING vendor */
/* j STRING release */
/* p p = pad (i+j, 8) */
} iceConnectionReplyMsg;
typedef struct {
CARD8 majorOpcode;
CARD8 minorOpcode;
CARD8 protocolOpcode;
CARD8 mustAuthenticate;
CARD32 length B32;
CARD8 versionCount;
CARD8 authCount;
CARD8 unused[6];
/* i STRING protocol-name */
/* j STRING vendor */
/* k STRING release */
/* m LIST of STRING authentication-protocol-names */
/* n LIST of VERSION version-list */
/* p p = pad (i+j+k+m+n, 8) */
} iceProtocolSetupMsg;
typedef struct {
CARD8 majorOpcode;
CARD8 minorOpcode;
CARD8 versionIndex;
CARD8 protocolOpcode;
CARD32 length B32;
/* i STRING vendor */
/* j STRING release */
/* p p = pad (i+j, 8) */
} iceProtocolReplyMsg;
typedef iceMsg icePingMsg;
typedef iceMsg icePingReplyMsg;
typedef iceMsg iceWantToCloseMsg;
typedef iceMsg iceNoCloseMsg;
/*
* SIZEOF values. These better be multiples of 8.
*/
#define sz_iceMsg 8
#define sz_iceErrorMsg 16
#define sz_iceByteOrderMsg 8
#define sz_iceConnectionSetupMsg 16
#define sz_iceAuthRequiredMsg 16
#define sz_iceAuthReplyMsg 16
#define sz_iceAuthNextPhaseMsg 16
#define sz_iceConnectionReplyMsg 8
#define sz_iceProtocolSetupMsg 16
#define sz_iceProtocolReplyMsg 8
#define sz_icePingMsg 8
#define sz_icePingReplyMsg 8
#define sz_iceWantToCloseMsg 8
#define sz_iceNoCloseMsg 8
#endif /* _ICEPROTO_H_ */

View File

@ -0,0 +1,124 @@
/******************************************************************************
Copyright 1993, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Author: Ralph Mor, X Consortium
******************************************************************************/
#ifndef _ICEUTIL_H_
#define _ICEUTIL_H_
#include <X11/Xfuncproto.h>
#include <stdio.h>
_XFUNCPROTOBEGIN
/*
* Data structure for entry in ICE authority file
*/
typedef struct {
char *protocol_name;
unsigned short protocol_data_length;
char *protocol_data;
char *network_id;
char *auth_name;
unsigned short auth_data_length;
char *auth_data;
} IceAuthFileEntry;
/*
* Authentication data maintained in memory.
*/
typedef struct {
char *protocol_name;
char *network_id;
char *auth_name;
unsigned short auth_data_length;
char *auth_data;
} IceAuthDataEntry;
/*
* Return values from IceLockAuthFile
*/
#define IceAuthLockSuccess 0 /* lock succeeded */
#define IceAuthLockError 1 /* lock unexpectely failed, check errno */
#define IceAuthLockTimeout 2 /* lock failed, timeouts expired */
/*
* Function Prototypes
*/
extern char *IceAuthFileName (
void
);
extern int IceLockAuthFile (
const char * /* file_name */,
int /* retries */,
int /* timeout */,
long /* dead */
);
extern void IceUnlockAuthFile (
const char * /* file_name */
);
extern IceAuthFileEntry *IceReadAuthFileEntry (
FILE * /* auth_file */
);
extern void IceFreeAuthFileEntry (
IceAuthFileEntry * /* auth */
);
extern Status IceWriteAuthFileEntry (
FILE * /* auth_file */,
IceAuthFileEntry * /* auth */
);
extern IceAuthFileEntry *IceGetAuthFileEntry (
const char * /* protocol_name */,
const char * /* network_id */,
const char * /* auth_name */
);
extern char *IceGenerateMagicCookie (
int /* len */
);
extern void IceSetPaAuthData (
int /* numEntries */,
IceAuthDataEntry * /* entries */
);
_XFUNCPROTOEND
#endif /* _ICEUTIL_H_ */

View File

@ -0,0 +1,30 @@
#ifndef _X11_IMUTIL_H_
#define _X11_IMUTIL_H_
extern int
_XGetScanlinePad(
Display *dpy,
int depth);
extern int
_XGetBitsPerPixel(
Display *dpy,
int depth);
extern int
_XSetImage(
XImage *srcimg,
register XImage *dstimg,
register int x,
register int y);
extern int
_XReverse_Bytes(
register unsigned char *bpt,
register int nb);
extern void
_XInitImageFuncPtrs(
register XImage *image);
#endif /* _X11_IMUTIL_H_ */

View File

@ -0,0 +1,430 @@
/***********************************************************
Copyright 1987, 1988, 1994, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
#ifndef _XtinitialI_h
#define _XtinitialI_h
/****************************************************************
*
* Displays
*
****************************************************************/
#ifndef X_NOT_POSIX
#ifdef _POSIX_SOURCE
#include <limits.h>
#else
#define _POSIX_SOURCE
#include <limits.h>
#undef _POSIX_SOURCE
#endif
#endif
#ifndef PATH_MAX
#ifdef WIN32
#define PATH_MAX 512
#else
#include <sys/param.h>
#endif
#ifndef PATH_MAX
#ifdef MAXPATHLEN
#define PATH_MAX MAXPATHLEN
#else
#define PATH_MAX 1024
#endif
#endif
#endif
#include <X11/Xos.h>
#include <X11/Xpoll.h>
_XFUNCPROTOBEGIN
typedef struct _TimerEventRec {
struct timeval te_timer_value;
struct _TimerEventRec *te_next;
XtTimerCallbackProc te_proc;
XtAppContext app;
XtPointer te_closure;
} TimerEventRec;
typedef struct _InputEvent {
XtInputCallbackProc ie_proc;
XtPointer ie_closure;
struct _InputEvent *ie_next;
struct _InputEvent *ie_oq;
XtAppContext app;
int ie_source;
XtInputMask ie_condition;
} InputEvent;
typedef struct _SignalEventRec {
XtSignalCallbackProc se_proc;
XtPointer se_closure;
struct _SignalEventRec *se_next;
XtAppContext app;
Boolean se_notice;
} SignalEventRec;
typedef struct _WorkProcRec {
XtWorkProc proc;
XtPointer closure;
struct _WorkProcRec *next;
XtAppContext app;
} WorkProcRec;
typedef struct
{
#ifndef USE_POLL
fd_set rmask;
fd_set wmask;
fd_set emask;
#endif
int nfds;
} FdStruct;
typedef struct _LangProcRec {
XtLanguageProc proc;
XtPointer closure;
} LangProcRec;
typedef struct _ProcessContextRec {
XtAppContext defaultAppContext;
XtAppContext appContextList;
ConverterTable globalConverterTable;
LangProcRec globalLangProcRec;
} ProcessContextRec, *ProcessContext;
typedef struct {
char* start;
char* current;
int bytes_remaining;
} Heap;
typedef struct _DestroyRec DestroyRec;
typedef struct _XtAppStruct {
XtAppContext next; /* link to next app in process context */
ProcessContext process; /* back pointer to our process context */
InternalCallbackList destroy_callbacks;
Display **list;
TimerEventRec *timerQueue;
WorkProcRec *workQueue;
InputEvent **input_list;
InputEvent *outstandingQueue;
SignalEventRec *signalQueue;
XrmDatabase errorDB;
XtErrorMsgHandler errorMsgHandler, warningMsgHandler;
XtErrorHandler errorHandler, warningHandler;
struct _ActionListRec *action_table;
ConverterTable converterTable;
unsigned long selectionTimeout;
FdStruct fds;
short count; /* num of assigned entries in list */
short max; /* allocate size of list */
short last;
short input_count;
short input_max; /* elts input_list init'd with */
Boolean sync, being_destroyed, error_inited;
#ifndef NO_IDENTIFY_WINDOWS
Boolean identify_windows; /* debugging hack */
#endif
Heap heap;
String * fallback_resources; /* Set by XtAppSetFallbackResources. */
struct _ActionHookRec* action_hook_list;
struct _BlockHookRec* block_hook_list;
int destroy_list_size; /* state data for 2-phase destroy */
int destroy_count;
int dispatch_level;
DestroyRec* destroy_list;
Widget in_phase2_destroy;
LangProcRec langProcRec;
struct _TMBindCacheRec * free_bindings;
String display_name_tried;
Display **dpy_destroy_list;
int dpy_destroy_count;
Boolean exit_flag;
Boolean rebuild_fdlist;
#ifdef XTHREADS
LockPtr lock_info;
ThreadAppProc lock;
ThreadAppProc unlock;
ThreadAppYieldLockProc yield_lock;
ThreadAppRestoreLockProc restore_lock;
ThreadAppProc free_lock;
#endif
} XtAppStruct;
extern void _XtHeapInit(Heap* heap);
extern void _XtHeapFree(Heap* heap);
#ifdef XTTRACEMEMORY
extern char *_XtHeapMalloc(
Heap* /* heap */,
Cardinal /* size */,
char * /* file */,
int /* line */
);
#define _XtHeapAlloc(heap,bytes) _XtHeapMalloc(heap, bytes, __FILE__, __LINE__)
#else /* XTTRACEMEMORY */
extern char* _XtHeapAlloc(
Heap* /* heap */,
Cardinal /* size */
);
#endif /* XTTRACEMEMORY */
extern void _XtSetDefaultErrorHandlers(
XtErrorMsgHandler* /* errMsg */,
XtErrorMsgHandler* /* warnMsg */,
XtErrorHandler* /* err */,
XtErrorHandler* /* warn */
);
extern void _XtSetDefaultSelectionTimeout(
unsigned long* /* timeout */
);
extern XtAppContext _XtDefaultAppContext(
void
);
extern ProcessContext _XtGetProcessContext(
void
);
Display *
_XtAppInit(
XtAppContext* /* app_context_return */,
String /* application_class */,
XrmOptionDescRec* /* options */,
Cardinal /* num_options */,
int* /* argc_in_out */,
String** /* argv_in_out */,
String* /* fallback_resources */
);
extern void _XtDestroyAppContexts(
void
);
extern void _XtCloseDisplays(
XtAppContext /* app */
);
extern int _XtAppDestroyCount;
extern int _XtWaitForSomething(
XtAppContext /* app */,
_XtBoolean /* ignoreEvents */,
_XtBoolean /* ignoreTimers */,
_XtBoolean /* ignoreInputs */,
_XtBoolean /* ignoreSignals */,
_XtBoolean /* block */,
#ifdef XTHREADS
_XtBoolean /* drop_lock */,
#endif
unsigned long* /* howlong */
);
typedef struct _CaseConverterRec *CaseConverterPtr;
typedef struct _CaseConverterRec {
KeySym start; /* first KeySym valid in converter */
KeySym stop; /* last KeySym valid in converter */
XtCaseProc proc; /* case converter function */
CaseConverterPtr next; /* next converter record */
} CaseConverterRec;
typedef struct _ExtensionSelectorRec {
XtExtensionSelectProc proc;
int min, max;
XtPointer client_data;
} ExtSelectRec;
typedef struct _XtPerDisplayStruct {
InternalCallbackList destroy_callbacks;
Region region;
CaseConverterPtr case_cvt; /* user-registered case converters */
XtKeyProc defaultKeycodeTranslator;
XtAppContext appContext;
unsigned long keysyms_serial; /* for tracking MappingNotify events */
KeySym *keysyms; /* keycode to keysym table */
int keysyms_per_keycode; /* number of keysyms for each keycode*/
int min_keycode, max_keycode; /* range of keycodes */
KeySym *modKeysyms; /* keysym values for modToKeysysm */
ModToKeysymTable *modsToKeysyms; /* modifiers to Keysysms index table*/
unsigned char isModifier[32]; /* key-is-modifier-p bit table */
KeySym lock_meaning; /* Lock modifier meaning */
Modifiers mode_switch; /* keyboard group modifiers */
Modifiers num_lock; /* keyboard numlock modifiers */
Boolean being_destroyed;
Boolean rv; /* reverse_video resource */
XrmName name; /* resolved app name */
XrmClass class; /* application class */
Heap heap;
struct _GCrec *GClist; /* support for XtGetGC */
Drawable **pixmap_tab; /* ditto for XtGetGC */
String language; /* XPG language string */
XEvent last_event; /* last event dispatched */
Time last_timestamp; /* from last event dispatched */
int multi_click_time; /* for XtSetMultiClickTime */
struct _TMKeyContextRec* tm_context; /* for XtGetActionKeysym */
InternalCallbackList mapping_callbacks; /* special case for TM */
XtPerDisplayInputRec pdi; /* state for modal grabs & kbd focus */
struct _WWTable *WWtable; /* window to widget table */
XrmDatabase *per_screen_db; /* per screen resource databases */
XrmDatabase cmd_db; /* db from command line, if needed */
XrmDatabase server_db; /* resource property else .Xdefaults */
XtEventDispatchProc* dispatcher_list;
ExtSelectRec* ext_select_list;
int ext_select_count;
Widget hook_object;
#ifndef X_NO_RESOURCE_CONFIGURATION_MANAGEMENT
Atom rcm_init; /* ResConfig - initialize */
Atom rcm_data; /* ResConfig - data atom */
#endif
} XtPerDisplayStruct, *XtPerDisplay;
typedef struct _PerDisplayTable {
Display *dpy;
XtPerDisplayStruct perDpy;
struct _PerDisplayTable *next;
} PerDisplayTable, *PerDisplayTablePtr;
extern PerDisplayTablePtr _XtperDisplayList;
extern XtPerDisplay _XtSortPerDisplayList(
Display* /* dpy */
);
extern XtPerDisplay _XtGetPerDisplay(
Display* /* dpy */
);
extern XtPerDisplayInputRec* _XtGetPerDisplayInput(
Display* /* dpy */
);
#if 0
#ifdef DEBUG
#define _XtGetPerDisplay(display) \
((_XtperDisplayList != NULL && (_XtperDisplayList->dpy == (display))) \
? &_XtperDisplayList->perDpy \
: _XtSortPerDisplayList(display))
#define _XtGetPerDisplayInput(display) \
((_XtperDisplayList != NULL && (_XtperDisplayList->dpy == (display))) \
? &_XtperDisplayList->perDpy.pdi \
: &_XtSortPerDisplayList(display)->pdi)
#else
#define _XtGetPerDisplay(display) \
((_XtperDisplayList->dpy == (display)) \
? &_XtperDisplayList->perDpy \
: _XtSortPerDisplayList(display))
#define _XtGetPerDisplayInput(display) \
((_XtperDisplayList->dpy == (display)) \
? &_XtperDisplayList->perDpy.pdi \
: &_XtSortPerDisplayList(display)->pdi)
#endif /*DEBUG*/
#endif
extern void _XtDisplayInitialize(
Display* /* dpy */,
XtPerDisplay /* pd */,
_Xconst char* /* name */,
XrmOptionDescRec* /* urlist */,
Cardinal /* num_urs */,
int* /* argc */,
char** /* argv */
);
extern void _XtCacheFlushTag(
XtAppContext /* app */,
XtPointer /* tag */
);
extern void _XtFreeActions(
struct _ActionListRec* /* action_table */
);
extern void _XtDoPhase2Destroy(
XtAppContext /* app */,
int /* dispatch_level */
);
extern void _XtDoFreeBindings(
XtAppContext /* app */
);
extern void _XtExtensionSelect(
Widget /* widget */
);
#define _XtSafeToDestroy(app) ((app)->dispatch_level == 0)
extern void _XtAllocWWTable(
XtPerDisplay pd
);
extern void _XtFreeWWTable(
XtPerDisplay pd
);
extern String _XtGetUserName(String dest, int len);
extern XrmDatabase _XtPreparseCommandLine(XrmOptionDescRec *urlist,
Cardinal num_urs, int argc, String *argv,
String *applName, String *displayName,
String *language);
_XFUNCPROTOEND
#endif /* _XtinitialI_h */

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,229 @@
/***********************************************************
Copyright 1987, 1988, 1994, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
#ifndef _XtintrinsicI_h
#define _XtintrinsicI_h
#include "Xtos.h"
#include "IntrinsicP.h"
#ifdef WIN32
#define _WILLWINSOCK_
#endif
#include <X11/Xos.h>
#include "Object.h"
#include "RectObj.h"
#include "ObjectP.h"
#include "RectObjP.h"
#include "ConvertI.h"
#include "TranslateI.h"
#define RectObjClassFlag 0x02
#define WidgetClassFlag 0x04
#define CompositeClassFlag 0x08
#define ConstraintClassFlag 0x10
#define ShellClassFlag 0x20
#define WMShellClassFlag 0x40
#define TopLevelClassFlag 0x80
/*
* The following macros, though very handy, are not suitable for
* IntrinsicP.h as they violate the rule that arguments are to
* be evaluated exactly once.
*/
#define XtDisplayOfObject(object) \
(XtIsWidget(object) ? (object)->core.screen->display : \
_XtIsHookObject(object) ? ((HookObject)(object))->hooks.screen->display : \
_XtWindowedAncestor(object)->core.screen->display)
#define XtScreenOfObject(object) \
(XtIsWidget(object) ? (object)->core.screen : \
_XtIsHookObject(object) ? ((HookObject)(object))->hooks.screen : \
_XtWindowedAncestor(object)->core.screen)
#define XtWindowOfObject(object) \
((XtIsWidget(object) ? (object) : _XtWindowedAncestor(object)) \
->core.window)
#define XtIsManaged(object) \
(XtIsRectObj(object) ? (object)->core.managed : False)
#define XtIsSensitive(object) \
(XtIsRectObj(object) ? ((object)->core.sensitive && \
(object)->core.ancestor_sensitive) : False)
/****************************************************************
*
* Byte utilities
*
****************************************************************/
#define _XBCOPYFUNC _XtBcopy
#include <X11/Xfuncs.h>
#define XtMemmove(dst, src, size) \
if ((char *)(dst) != (char *)(src)) { \
(void) memcpy((char *) (dst), (char *) (src), (int) (size)); \
}
#define XtBZero(dst, size) \
bzero((char *) (dst), (int) (size))
#define XtMemcmp(b1, b2, size) \
memcmp((char *) (b1), (char *) (b2), (int) (size))
/****************************************************************
*
* Stack cache allocation/free
*
****************************************************************/
#define XtStackAlloc(size, stack_cache_array) \
((size) <= sizeof(stack_cache_array) \
? (XtPointer)(stack_cache_array) \
: XtMalloc((unsigned)(size)))
#define XtStackFree(pointer, stack_cache_array) \
{ if ((pointer) != ((XtPointer)(stack_cache_array))) XtFree(pointer); }
/***************************************************************
*
* Filename defines
*
**************************************************************/
/* used by XtResolvePathname */
#ifndef XFILESEARCHPATHDEFAULT
#define XFILESEARCHPATHDEFAULT "/usr/lib/X11/%L/%T/%N%S:/usr/lib/X11/%l/%T/%N%S:/usr/lib/X11/%T/%N%S"
#endif
/* the following two were both "X Toolkit " prior to R4 */
#ifndef XTERROR_PREFIX
#define XTERROR_PREFIX ""
#endif
#ifndef XTWARNING_PREFIX
#define XTWARNING_PREFIX ""
#endif
#ifndef ERRORDB
#define ERRORDB "/usr/lib/X11/XtErrorDB"
#endif
_XFUNCPROTOBEGIN
extern String XtCXtToolkitError;
extern void _XtAllocError(
String /* alloc_type */
);
extern void _XtCompileResourceList(
XtResourceList /* resources */,
Cardinal /* num_resources */
);
extern XtGeometryResult _XtMakeGeometryRequest(
Widget /* widget */,
XtWidgetGeometry* /* request */,
XtWidgetGeometry* /* reply_return */,
Boolean* /* clear_rect_obj */
);
extern Boolean _XtIsHookObject(
Widget /* widget */
);
extern void _XtAddShellToHookObj(
Widget /* widget */
);
/* GCManager.c */
extern void _XtGClistFree(Display *dpy, XtPerDisplay pd);
/** GeoTattler stuff */
#ifdef XT_GEO_TATTLER
extern void _XtGeoTab (int);
extern void _XtGeoTrace (
Widget widget,
...
) _X_ATTRIBUTE_PRINTF(2,3);
#define CALLGEOTAT(f) f
#else /* XT_GEO_TATTLER */
#define CALLGEOTAT(f)
#endif /* XT_GEO_TATTLER */
#ifndef XTTRACEMEMORY
extern char* __XtMalloc (
unsigned /* size */
);
extern char* __XtCalloc (
unsigned /* num */,
unsigned /* size */
);
#else
#define __XtMalloc XtMalloc
#define __XtCalloc XtCalloc
#endif
_XFUNCPROTOEND
#endif /* _XtintrinsicI_h */
/* DON'T ADD STUFF AFTER THIS #endif */

View File

@ -0,0 +1,329 @@
/***********************************************************
Copyright 1987, 1988, 1994, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
#ifndef _XtintrinsicP_h
#define _XtintrinsicP_h
#include <X11/Intrinsic.h>
/*
* Field sizes and offsets of XrmResource must match those of XtResource.
* Type long is used instead of XrmQuark here because XrmQuark and String
* are not the same size on all systems.
*/
typedef struct {
long xrm_name; /* Resource name quark */
long xrm_class; /* Resource class quark */
long xrm_type; /* Resource representation type quark */
Cardinal xrm_size; /* Size in bytes of representation */
int xrm_offset; /* -offset-1 */
long xrm_default_type; /* Default representation type quark */
XtPointer xrm_default_addr; /* Default resource address */
} XrmResource, *XrmResourceList;
typedef unsigned long XtVersionType;
#define XT_VERSION 11
#ifndef XT_REVISION
#define XT_REVISION 6
#endif
#define XtVersion (XT_VERSION * 1000 + XT_REVISION)
#define XtVersionDontCheck 0
typedef void (*XtProc)(
void
);
typedef void (*XtWidgetClassProc)(
WidgetClass /* class */
);
typedef void (*XtWidgetProc)(
Widget /* widget */
);
typedef Boolean (*XtAcceptFocusProc)(
Widget /* widget */,
Time* /* time */
);
typedef void (*XtArgsProc)(
Widget /* widget */,
ArgList /* args */,
Cardinal* /* num_args */
);
typedef void (*XtInitProc)(
Widget /* request */,
Widget /* new */,
ArgList /* args */,
Cardinal* /* num_args */
);
typedef Boolean (*XtSetValuesFunc)(
Widget /* old */,
Widget /* request */,
Widget /* new */,
ArgList /* args */,
Cardinal* /* num_args */
);
typedef Boolean (*XtArgsFunc)(
Widget /* widget */,
ArgList /* args */,
Cardinal* /* num_args */
);
typedef void (*XtAlmostProc)(
Widget /* old */,
Widget /* new */,
XtWidgetGeometry* /* request */,
XtWidgetGeometry* /* reply */
);
typedef void (*XtExposeProc)(
Widget /* widget */,
XEvent* /* event */,
Region /* region */
);
/* compress_exposure options*/
#define XtExposeNoCompress ((XtEnum)False)
#define XtExposeCompressSeries ((XtEnum)True)
#define XtExposeCompressMultiple 2
#define XtExposeCompressMaximal 3
/* modifiers */
#define XtExposeGraphicsExpose 0x10
#define XtExposeGraphicsExposeMerged 0x20
#define XtExposeNoExpose 0x40
#define XtExposeNoRegion 0x80
typedef void (*XtRealizeProc)(
Widget /* widget */,
XtValueMask* /* mask */,
XSetWindowAttributes* /* attributes */
);
typedef XtGeometryResult (*XtGeometryHandler)(
Widget /* widget */,
XtWidgetGeometry* /* request */,
XtWidgetGeometry* /* reply */
);
typedef void (*XtStringProc)(
Widget /* widget */,
String /* str */
);
typedef struct {
String name; /* resource name */
String type; /* representation type name */
XtArgVal value; /* representation */
int size; /* size of representation */
} XtTypedArg, *XtTypedArgList;
typedef void (*XtAllocateProc)(
WidgetClass /* widget_class */,
Cardinal * /* constraint_size */,
Cardinal * /* more_bytes */,
ArgList /* args */,
Cardinal * /* num_args */,
XtTypedArgList /* typed_args */,
Cardinal * /* num_typed_args */,
Widget * /* widget_return */,
XtPointer * /* more_bytes_return */
);
typedef void (*XtDeallocateProc)(
Widget /* widget */,
XtPointer /* more_bytes */
);
struct _XtStateRec; /* Forward declare before use for C++ */
typedef struct _XtTMRec {
XtTranslations translations; /* private to Translation Manager */
XtBoundActions proc_table; /* procedure bindings for actions */
struct _XtStateRec *current_state; /* Translation Manager state ptr */
unsigned long lastEventTime;
} XtTMRec, *XtTM;
#include <X11/CoreP.h>
#include <X11/CompositeP.h>
#include <X11/ConstrainP.h>
#include <X11/ObjectP.h>
#include <X11/RectObjP.h>
#define XtDisplay(widget) DisplayOfScreen((widget)->core.screen)
#define XtScreen(widget) ((widget)->core.screen)
#define XtWindow(widget) ((widget)->core.window)
#define XtClass(widget) ((widget)->core.widget_class)
#define XtSuperclass(widget) (XtClass(widget)->core_class.superclass)
#define XtIsRealized(object) (XtWindowOfObject(object) != None)
#define XtParent(widget) ((widget)->core.parent)
#undef XtIsRectObj
extern Boolean XtIsRectObj(Widget);
#define XtIsRectObj(obj) \
(((Object)(obj))->object.widget_class->core_class.class_inited & 0x02)
#undef XtIsWidget
extern Boolean XtIsWidget(Widget);
#define XtIsWidget(obj) \
(((Object)(obj))->object.widget_class->core_class.class_inited & 0x04)
#undef XtIsComposite
extern Boolean XtIsComposite(Widget);
#define XtIsComposite(obj) \
(((Object)(obj))->object.widget_class->core_class.class_inited & 0x08)
#undef XtIsConstraint
extern Boolean XtIsConstraint(Widget);
#define XtIsConstraint(obj) \
(((Object)(obj))->object.widget_class->core_class.class_inited & 0x10)
#undef XtIsShell
extern Boolean XtIsShell(Widget);
#define XtIsShell(obj) \
(((Object)(obj))->object.widget_class->core_class.class_inited & 0x20)
#undef XtIsWMShell
extern Boolean XtIsWMShell(Widget);
#define XtIsWMShell(obj) \
(((Object)(obj))->object.widget_class->core_class.class_inited & 0x40)
#undef XtIsTopLevelShell
extern Boolean XtIsTopLevelShell(Widget);
#define XtIsTopLevelShell(obj) \
(((Object)(obj))->object.widget_class->core_class.class_inited & 0x80)
#ifdef DEBUG
#define XtCheckSubclass(w, widget_class_ptr, message) \
if (!XtIsSubclass(((Widget)(w)), (widget_class_ptr))) { \
String params[3]; \
Cardinal num_params = 3; \
params[0] = ((Widget)(w))->core.widget_class->core_class.class_name;\
params[1] = (widget_class_ptr)->core_class.class_name; \
params[2] = (message); \
XtAppErrorMsg(XtWidgetToApplicationContext((Widget)(w)), \
"subclassMismatch", "xtCheckSubclass", "XtToolkitError", \
"Widget class %s found when subclass of %s expected: %s",\
params, &num_params); \
}
#else
#define XtCheckSubclass(w, widget_class, message) /* nothing */
#endif
_XFUNCPROTOBEGIN
extern Widget _XtWindowedAncestor( /* internal; implementation-dependent */
Widget /* object */
);
#if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(LIBXT_COMPILATION)
__declspec(dllimport)
#else
extern
#endif
void _XtInherit(
void
);
extern void _XtHandleFocus(
Widget /* widget */,
XtPointer /* client_data */,
XEvent * /* event */,
Boolean * /* cont */);
extern void XtCreateWindow(
Widget /* widget */,
unsigned int /* window_class */,
Visual* /* visual */,
XtValueMask /* value_mask */,
XSetWindowAttributes* /* attributes */
);
extern void XtResizeWidget(
Widget /* widget */,
_XtDimension /* width */,
_XtDimension /* height */,
_XtDimension /* border_width */
);
extern void XtMoveWidget(
Widget /* widget */,
_XtPosition /* x */,
_XtPosition /* y */
);
extern void XtConfigureWidget(
Widget /* widget */,
_XtPosition /* x */,
_XtPosition /* y */,
_XtDimension /* width */,
_XtDimension /* height */,
_XtDimension /* border_width */
);
extern void XtResizeWindow(
Widget /* widget */
);
extern void XtProcessLock(
void
);
extern void XtProcessUnlock(
void
);
_XFUNCPROTOEND
#endif /* _XtIntrinsicP_h */
/* DON'T ADD STUFF AFTER THIS #endif */

View File

@ -0,0 +1,63 @@
/***********************************************************
Copyright 1987, 1988, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
#ifndef _XtObject_h
#define _XtObject_h
_XFUNCPROTOBEGIN
typedef struct _ObjectRec *Object;
typedef struct _ObjectClassRec *ObjectClass;
#ifndef VMS
externalref WidgetClass objectClass;
#endif
_XFUNCPROTOEND
#endif /* _XtObject_h */
/* DON'T ADD STUFF AFTER THIS #endif */

View File

@ -0,0 +1,141 @@
/***********************************************************
Copyright 1987, 1988, 1994, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
#ifndef _Xt_ObjectP_h_
#define _Xt_ObjectP_h_
#include <X11/Object.h>
_XFUNCPROTOBEGIN
/**********************************************************
* Object Instance Data Structures
*
**********************************************************/
/* these fields match CorePart and can not be changed */
typedef struct _ObjectPart {
Widget self; /* pointer to widget itself */
WidgetClass widget_class; /* pointer to Widget's ClassRec */
Widget parent; /* parent widget */
XrmName xrm_name; /* widget resource name quarkified */
Boolean being_destroyed; /* marked for destroy */
XtCallbackList destroy_callbacks; /* who to call when widget destroyed */
XtPointer constraints; /* constraint record */
} ObjectPart;
typedef struct _ObjectRec {
ObjectPart object;
} ObjectRec;
/********************************************************
* Object Class Data Structures
*
********************************************************/
/* these fields match CoreClassPart and can not be changed */
/* ideally these structures would only contain the fields required;
but because the CoreClassPart cannot be changed at this late date
extraneous fields are necessary to make the field offsets match */
typedef struct _ObjectClassPart {
WidgetClass superclass; /* pointer to superclass ClassRec */
String class_name; /* widget resource class name */
Cardinal widget_size; /* size in bytes of widget record */
XtProc class_initialize; /* class initialization proc */
XtWidgetClassProc class_part_initialize; /* dynamic initialization */
XtEnum class_inited; /* has class been initialized? */
XtInitProc initialize; /* initialize subclass fields */
XtArgsProc initialize_hook; /* notify that initialize called */
XtProc obj1; /* NULL */
XtPointer obj2; /* NULL */
Cardinal obj3; /* NULL */
XtResourceList resources; /* resources for subclass fields */
Cardinal num_resources; /* number of entries in resources */
XrmClass xrm_class; /* resource class quarkified */
Boolean obj4; /* NULL */
XtEnum obj5; /* NULL */
Boolean obj6; /* NULL */
Boolean obj7; /* NULL */
XtWidgetProc destroy; /* free data for subclass pointers */
XtProc obj8; /* NULL */
XtProc obj9; /* NULL */
XtSetValuesFunc set_values; /* set subclass resource values */
XtArgsFunc set_values_hook; /* notify that set_values called */
XtProc obj10; /* NULL */
XtArgsProc get_values_hook; /* notify that get_values called */
XtProc obj11; /* NULL */
XtVersionType version; /* version of intrinsics used */
XtPointer callback_private; /* list of callback offsets */
String obj12; /* NULL */
XtProc obj13; /* NULL */
XtProc obj14; /* NULL */
XtPointer extension; /* pointer to extension record */
}ObjectClassPart;
typedef struct {
XtPointer next_extension; /* 1st 4 required for all extension records */
XrmQuark record_type; /* NULLQUARK; when on ObjectClassPart */
long version; /* must be XtObjectExtensionVersion */
Cardinal record_size; /* sizeof(ObjectClassExtensionRec) */
XtAllocateProc allocate;
XtDeallocateProc deallocate;
} ObjectClassExtensionRec, *ObjectClassExtension;
typedef struct _ObjectClassRec {
ObjectClassPart object_class;
} ObjectClassRec;
externalref ObjectClassRec objectClassRec;
_XFUNCPROTOEND
#define XtObjectExtensionVersion 1L
#define XtInheritAllocate ((XtAllocateProc) _XtInherit)
#define XtInheritDeallocate ((XtDeallocateProc) _XtInherit)
#endif /*_Xt_ObjectP_h_*/

View File

@ -0,0 +1,185 @@
/********************************************************
Copyright 1988 by Hewlett-Packard Company
Copyright 1987, 1988, 1989 by Digital Equipment Corporation, Maynard
Permission to use, copy, modify, and distribute this software
and its documentation for any purpose and without fee is hereby
granted, provided that the above copyright notice appear in all
copies and that both that copyright notice and this permission
notice appear in supporting documentation, and that the names of
Hewlett-Packard or Digital not be used in advertising or
publicity pertaining to distribution of the software without specific,
written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
********************************************************/
/*
Copyright 1987, 1988, 1989, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
#ifndef _PDI_h_
#define _PDI_h_
#define KEYBOARD TRUE
#define POINTER FALSE
_XFUNCPROTOBEGIN
typedef enum {
XtNoServerGrab,
XtPassiveServerGrab,
XtActiveServerGrab,
XtPseudoPassiveServerGrab,
XtPseudoActiveServerGrab
}XtServerGrabType;
typedef struct _XtServerGrabRec {
struct _XtServerGrabRec *next;
Widget widget;
unsigned int ownerEvents:1;
unsigned int pointerMode:1;
unsigned int keyboardMode:1;
unsigned int hasExt:1;
unsigned int confineToIsWidgetWin:1;
KeyCode keybut;
unsigned short modifiers;
unsigned short eventMask;
} XtServerGrabRec, *XtServerGrabPtr;
typedef struct _XtGrabExtRec {
Mask *pKeyButMask;
Mask *pModifiersMask;
Window confineTo;
Cursor cursor;
} XtServerGrabExtRec, *XtServerGrabExtPtr;
#define GRABEXT(p) ((XtServerGrabExtPtr)((p)+1))
typedef struct _XtDeviceRec{
XtServerGrabRec grab; /* need copy in order to protect
during grab */
XtServerGrabType grabType;
}XtDeviceRec, *XtDevice;
#define XtMyAncestor 0
#define XtMyDescendant 1
#define XtMyCousin 2
#define XtMySelf 3
#define XtUnrelated 4
typedef char XtGeneology; /* do not use an enum makes PerWidgetInput larger */
typedef struct {
Widget focusKid;
XtServerGrabPtr keyList, ptrList;
Widget queryEventDescendant;
unsigned int map_handler_added:1;
unsigned int realize_handler_added:1;
unsigned int active_handler_added:1;
unsigned int haveFocus:1;
XtGeneology focalPoint;
}XtPerWidgetInputRec, *XtPerWidgetInput;
typedef struct XtPerDisplayInputRec{
XtGrabList grabList;
XtDeviceRec keyboard, pointer;
KeyCode activatingKey;
Widget *trace;
int traceDepth, traceMax;
Widget focusWidget;
}XtPerDisplayInputRec, *XtPerDisplayInput;
#define IsServerGrab(g) ((g == XtPassiveServerGrab) ||\
(g == XtActiveServerGrab))
#define IsAnyGrab(g) ((g == XtPassiveServerGrab) ||\
(g == XtActiveServerGrab) ||\
(g == XtPseudoPassiveServerGrab))
#define IsEitherPassiveGrab(g) ((g == XtPassiveServerGrab) ||\
(g == XtPseudoPassiveServerGrab))
#define IsPseudoGrab(g) ((g == XtPseudoPassiveServerGrab))
extern void _XtDestroyServerGrabs(
Widget /* w */,
XtPointer /* pwi */, /*XtPerWidgetInput*/
XtPointer /* call_data */
);
extern XtPerWidgetInput _XtGetPerWidgetInput(
Widget /* widget */,
_XtBoolean /* create */
);
extern XtServerGrabPtr _XtCheckServerGrabsOnWidget(
XEvent* /* event */,
Widget /* widget */,
_XtBoolean /* isKeyboard */
);
/*
extern XtGrabList* _XtGetGrabList( XtPerDisplayInput );
*/
#define _XtGetGrabList(pdi) (&(pdi)->grabList)
extern void _XtFreePerWidgetInput(
Widget /* w */,
XtPerWidgetInput /* pwi */
);
extern Widget _XtProcessKeyboardEvent(
XKeyEvent* /* event */,
Widget /* widget */,
XtPerDisplayInput /* pdi */
);
extern Widget _XtProcessPointerEvent(
XButtonEvent* /* event */,
Widget /* widget */,
XtPerDisplayInput /* pdi */
);
extern void _XtRegisterPassiveGrabs(
Widget /* widget */
);
extern void _XtClearAncestorCache(
Widget /* widget */
);
_XFUNCPROTOEND
#endif /* _PDI_h_ */

View File

@ -0,0 +1,63 @@
/***********************************************************
Copyright 1987, 1988, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
#ifndef _XtRect_h
#define _XtRect_h
_XFUNCPROTOBEGIN
typedef struct _RectObjRec *RectObj;
typedef struct _RectObjClassRec *RectObjClass;
#ifndef VMS
externalref WidgetClass rectObjClass;
#endif
_XFUNCPROTOEND
#endif /* _XtRect_h */
/* DON'T ADD STUFF AFTER THIS #endif */

View File

@ -0,0 +1,131 @@
/***********************************************************
Copyright 1987, 1988, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
#ifndef _Xt_RectObjP_h_
#define _Xt_RectObjP_h_
#include <X11/RectObj.h>
#include <X11/ObjectP.h>
_XFUNCPROTOBEGIN
/**********************************************************
* Rectangle Object Instance Data Structures
*
**********************************************************/
/* these fields match CorePart and can not be changed */
typedef struct _RectObjPart {
Position x, y; /* rectangle position */
Dimension width, height; /* rectangle dimensions */
Dimension border_width; /* rectangle border width */
Boolean managed; /* is widget geometry managed? */
Boolean sensitive; /* is widget sensitive to user events*/
Boolean ancestor_sensitive; /* are all ancestors sensitive? */
}RectObjPart;
typedef struct _RectObjRec {
ObjectPart object;
RectObjPart rectangle;
} RectObjRec;
/********************************************************
* Rectangle Object Class Data Structures
*
********************************************************/
/* these fields match CoreClassPart and can not be changed */
/* ideally these structures would only contain the fields required;
but because the CoreClassPart cannot be changed at this late date
extraneous fields are necessary to make the field offsets match */
typedef struct _RectObjClassPart {
WidgetClass superclass; /* pointer to superclass ClassRec */
String class_name; /* widget resource class name */
Cardinal widget_size; /* size in bytes of widget record */
XtProc class_initialize; /* class initialization proc */
XtWidgetClassProc class_part_initialize; /* dynamic initialization */
XtEnum class_inited; /* has class been initialized? */
XtInitProc initialize; /* initialize subclass fields */
XtArgsProc initialize_hook; /* notify that initialize called */
XtProc rect1; /* NULL */
XtPointer rect2; /* NULL */
Cardinal rect3; /* NULL */
XtResourceList resources; /* resources for subclass fields */
Cardinal num_resources; /* number of entries in resources */
XrmClass xrm_class; /* resource class quarkified */
Boolean rect4; /* NULL */
XtEnum rect5; /* NULL */
Boolean rect6; /* NULL */
Boolean rect7; /* NULL */
XtWidgetProc destroy; /* free data for subclass pointers */
XtWidgetProc resize; /* geom manager changed widget size */
XtExposeProc expose; /* rediplay rectangle */
XtSetValuesFunc set_values; /* set subclass resource values */
XtArgsFunc set_values_hook; /* notify that set_values called */
XtAlmostProc set_values_almost; /* set values almost for geometry */
XtArgsProc get_values_hook; /* notify that get_values called */
XtProc rect9; /* NULL */
XtVersionType version; /* version of intrinsics used */
XtPointer callback_private; /* list of callback offsets */
String rect10; /* NULL */
XtGeometryHandler query_geometry; /* return preferred geometry */
XtProc rect11; /* NULL */
XtPointer extension; /* pointer to extension record */
} RectObjClassPart;
typedef struct _RectObjClassRec {
RectObjClassPart rect_class;
} RectObjClassRec;
externalref RectObjClassRec rectObjClassRec;
_XFUNCPROTOEND
#endif /*_Xt_RectObjP_h_*/

View File

@ -0,0 +1,76 @@
/*
Copyright 1987, 1988, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
/*****************************************************************
(C) COPYRIGHT International Business Machines Corp. 1992,1997
All Rights Reserved
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE IBM CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING,
BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of the IBM Corporation shall
not be used in advertising or otherwise to promote the sale, use or other
dealings in this Software without prior written authorization from the IBM
Corporation.
******************************************************************/
#ifndef _RESCONFIGP_H
#define _RESCONFIGP_H
#include <X11/Xfuncproto.h>
_XFUNCPROTOBEGIN
/*
* Atom names for resource configuration management customization tool.
*/
#define RCM_DATA "Custom Data"
#define RCM_INIT "Custom Init"
extern void _XtResourceConfigurationEH(
Widget /* w */,
XtPointer /* client_data */,
XEvent * /* event */
);
_XFUNCPROTOEND
#endif

View File

@ -0,0 +1,100 @@
/***********************************************************
Copyright 1987, 1988, 1994, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
/****************************************************************
*
* Resources
*
****************************************************************/
#ifndef _XtresourceI_h
#define _XtresourceI_h
#define StringToQuark(string) XrmStringToQuark(string)
#define StringToName(string) XrmStringToName(string)
#define StringToClass(string) XrmStringToClass(string)
_XFUNCPROTOBEGIN
extern void _XtDependencies(
XtResourceList * /* class_resp */,
Cardinal * /* class_num_resp */,
XrmResourceList * /* super_res */,
Cardinal /* super_num_res */,
Cardinal /* super_widget_size */);
extern void _XtResourceDependencies(
WidgetClass /* wc */
);
extern void _XtConstraintResDependencies(
ConstraintWidgetClass /* wc */
);
extern XtCacheRef* _XtGetResources(
Widget /* w */,
ArgList /* args */,
Cardinal /* num_args */,
XtTypedArgList /* typed_args */,
Cardinal* /* num_typed_args */
);
extern void _XtCopyFromParent(
Widget /* widget */,
int /* offset */,
XrmValue* /* value */
);
extern void _XtCopyToArg(char *src, XtArgVal *dst, unsigned int size);
extern void _XtCopyFromArg(XtArgVal src, char *dst, unsigned int size);
extern XrmResourceList* _XtCreateIndirectionTable(XtResourceList resources,
Cardinal num_resources);
extern void _XtResourceListInitialize(void);
_XFUNCPROTOEND
#endif /* _XtresourceI_h */

View File

@ -0,0 +1,128 @@
/*
Copyright 1993, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
/*
* Author: Ralph Mor, X Consortium
*/
#ifndef _SM_H_
#define _SM_H_
/*
* Protocol Version
*/
#define SmProtoMajor 1
#define SmProtoMinor 0
/*
* Interact Style
*/
#define SmInteractStyleNone 0
#define SmInteractStyleErrors 1
#define SmInteractStyleAny 2
/*
* Dialog Type
*/
#define SmDialogError 0
#define SmDialogNormal 1
/*
* Save Type
*/
#define SmSaveGlobal 0
#define SmSaveLocal 1
#define SmSaveBoth 2
/*
* Restart Style Hints
*/
#define SmRestartIfRunning 0
#define SmRestartAnyway 1
#define SmRestartImmediately 2
#define SmRestartNever 3
/*
* Property names
*/
#define SmCloneCommand "CloneCommand"
#define SmCurrentDirectory "CurrentDirectory"
#define SmDiscardCommand "DiscardCommand"
#define SmEnvironment "Environment"
#define SmProcessID "ProcessID"
#define SmProgram "Program"
#define SmRestartCommand "RestartCommand"
#define SmResignCommand "ResignCommand"
#define SmRestartStyleHint "RestartStyleHint"
#define SmShutdownCommand "ShutdownCommand"
#define SmUserID "UserID"
/*
* Property types
*/
#define SmCARD8 "CARD8"
#define SmARRAY8 "ARRAY8"
#define SmLISTofARRAY8 "LISTofARRAY8"
/*
* SM minor opcodes
*/
#define SM_Error 0
#define SM_RegisterClient 1
#define SM_RegisterClientReply 2
#define SM_SaveYourself 3
#define SM_SaveYourselfRequest 4
#define SM_InteractRequest 5
#define SM_Interact 6
#define SM_InteractDone 7
#define SM_SaveYourselfDone 8
#define SM_Die 9
#define SM_ShutdownCancelled 10
#define SM_CloseConnection 11
#define SM_SetProperties 12
#define SM_DeleteProperties 13
#define SM_GetProperties 14
#define SM_PropertiesReply 15
#define SM_SaveYourselfPhase2Request 16
#define SM_SaveYourselfPhase2 17
#define SM_SaveComplete 18
#endif /* _SM_H_ */

View File

@ -0,0 +1,543 @@
/*
Copyright 1993, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
/*
* Author: Ralph Mor, X Consortium
*/
#ifndef _SMLIB_H_
#define _SMLIB_H_
#include <X11/SM/SM.h>
#include <X11/ICE/ICElib.h>
/*
* Generic SM pointer
*/
typedef IcePointer SmPointer;
/*
* Connection objects. Defined in SMlibint.h
*/
typedef struct _SmcConn *SmcConn;
typedef struct _SmsConn *SmsConn;
/*
* Session Management property
*/
typedef struct {
int length; /* length (in bytes) of the value */
SmPointer value; /* the value */
} SmPropValue;
typedef struct {
char *name; /* name of property */
char *type; /* type of property */
int num_vals; /* number of values in property */
SmPropValue *vals; /* the values */
} SmProp;
/*
* SmcCloseConnection status return
*/
typedef enum {
SmcClosedNow,
SmcClosedASAP,
SmcConnectionInUse
} SmcCloseStatus;
/*
* Client callbacks
*/
typedef void (*SmcSaveYourselfProc) (
SmcConn /* smcConn */,
SmPointer /* clientData */,
int /* saveType */,
Bool /* shutdown */,
int /* interactStyle */,
Bool /* fast */
);
typedef void (*SmcSaveYourselfPhase2Proc) (
SmcConn /* smcConn */,
SmPointer /* clientData */
);
typedef void (*SmcInteractProc) (
SmcConn /* smcConn */,
SmPointer /* clientData */
);
typedef void (*SmcDieProc) (
SmcConn /* smcConn */,
SmPointer /* clientData */
);
typedef void (*SmcShutdownCancelledProc) (
SmcConn /* smcConn */,
SmPointer /* clientData */
);
typedef void (*SmcSaveCompleteProc) (
SmcConn /* smcConn */,
SmPointer /* clientData */
);
typedef void (*SmcPropReplyProc) (
SmcConn /* smcConn */,
SmPointer /* clientData */,
int /* numProps */,
SmProp ** /* props */
);
/*
* Callbacks set up at SmcOpenConnection time
*/
typedef struct {
struct {
SmcSaveYourselfProc callback;
SmPointer client_data;
} save_yourself;
struct {
SmcDieProc callback;
SmPointer client_data;
} die;
struct {
SmcSaveCompleteProc callback;
SmPointer client_data;
} save_complete;
struct {
SmcShutdownCancelledProc callback;
SmPointer client_data;
} shutdown_cancelled;
} SmcCallbacks;
#define SmcSaveYourselfProcMask (1L << 0)
#define SmcDieProcMask (1L << 1)
#define SmcSaveCompleteProcMask (1L << 2)
#define SmcShutdownCancelledProcMask (1L << 3)
/*
* Session manager callbacks
*/
typedef Status (*SmsRegisterClientProc) (
SmsConn /* smsConn */,
SmPointer /* managerData */,
char * /* previousId */
);
typedef void (*SmsInteractRequestProc) (
SmsConn /* smsConn */,
SmPointer /* managerData */,
int /* dialogType */
);
typedef void (*SmsInteractDoneProc) (
SmsConn /* smsConn */,
SmPointer /* managerData */,
Bool /* cancelShutdown */
);
typedef void (*SmsSaveYourselfRequestProc) (
SmsConn /* smsConn */,
SmPointer /* managerData */,
int /* saveType */,
Bool /* shutdown */,
int /* interactStyle */,
Bool /* fast */,
Bool /* global */
);
typedef void (*SmsSaveYourselfPhase2RequestProc) (
SmsConn /* smsConn */,
SmPointer /* managerData */
);
typedef void (*SmsSaveYourselfDoneProc) (
SmsConn /* smsConn */,
SmPointer /* managerData */,
Bool /* success */
);
typedef void (*SmsCloseConnectionProc) (
SmsConn /* smsConn */,
SmPointer /* managerData */,
int /* count */,
char ** /* reasonMsgs */
);
typedef void (*SmsSetPropertiesProc) (
SmsConn /* smsConn */,
SmPointer /* managerData */,
int /* numProps */,
SmProp ** /* props */
);
typedef void (*SmsDeletePropertiesProc) (
SmsConn /* smsConn */,
SmPointer /* managerData */,
int /* numProps */,
char ** /* propNames */
);
typedef void (*SmsGetPropertiesProc) (
SmsConn /* smsConn */,
SmPointer /* managerData */
);
/*
* Callbacks set up by a session manager when a new client connects.
*/
typedef struct {
struct {
SmsRegisterClientProc callback;
SmPointer manager_data;
} register_client;
struct {
SmsInteractRequestProc callback;
SmPointer manager_data;
} interact_request;
struct {
SmsInteractDoneProc callback;
SmPointer manager_data;
} interact_done;
struct {
SmsSaveYourselfRequestProc callback;
SmPointer manager_data;
} save_yourself_request;
struct {
SmsSaveYourselfPhase2RequestProc callback;
SmPointer manager_data;
} save_yourself_phase2_request;
struct {
SmsSaveYourselfDoneProc callback;
SmPointer manager_data;
} save_yourself_done;
struct {
SmsCloseConnectionProc callback;
SmPointer manager_data;
} close_connection;
struct {
SmsSetPropertiesProc callback;
SmPointer manager_data;
} set_properties;
struct {
SmsDeletePropertiesProc callback;
SmPointer manager_data;
} delete_properties;
struct {
SmsGetPropertiesProc callback;
SmPointer manager_data;
} get_properties;
} SmsCallbacks;
#define SmsRegisterClientProcMask (1L << 0)
#define SmsInteractRequestProcMask (1L << 1)
#define SmsInteractDoneProcMask (1L << 2)
#define SmsSaveYourselfRequestProcMask (1L << 3)
#define SmsSaveYourselfP2RequestProcMask (1L << 4)
#define SmsSaveYourselfDoneProcMask (1L << 5)
#define SmsCloseConnectionProcMask (1L << 6)
#define SmsSetPropertiesProcMask (1L << 7)
#define SmsDeletePropertiesProcMask (1L << 8)
#define SmsGetPropertiesProcMask (1L << 9)
typedef Status (*SmsNewClientProc) (
SmsConn /* smsConn */,
SmPointer /* managerData */,
unsigned long * /* maskRet */,
SmsCallbacks * /* callbacksRet */,
char ** /* failureReasonRet */
);
/*
* Error handlers
*/
typedef void (*SmcErrorHandler) (
SmcConn /* smcConn */,
Bool /* swap */,
int /* offendingMinorOpcode */,
unsigned long /* offendingSequence */,
int /* errorClass */,
int /* severity */,
SmPointer /* values */
);
typedef void (*SmsErrorHandler) (
SmsConn /* smsConn */,
Bool /* swap */,
int /* offendingMinorOpcode */,
unsigned long /* offendingSequence */,
int /* errorClass */,
int /* severity */,
SmPointer /* values */
);
/*
* Function Prototypes
*/
_XFUNCPROTOBEGIN
extern SmcConn SmcOpenConnection (
char * /* networkIdsList */,
SmPointer /* context */,
int /* xsmpMajorRev */,
int /* xsmpMinorRev */,
unsigned long /* mask */,
SmcCallbacks * /* callbacks */,
const char * /* previousId */,
char ** /* clientIdRet */,
int /* errorLength */,
char * /* errorStringRet */
);
extern SmcCloseStatus SmcCloseConnection (
SmcConn /* smcConn */,
int /* count */,
char ** /* reasonMsgs */
);
extern void SmcModifyCallbacks (
SmcConn /* smcConn */,
unsigned long /* mask */,
SmcCallbacks * /* callbacks */
);
extern void SmcSetProperties (
SmcConn /* smcConn */,
int /* numProps */,
SmProp ** /* props */
);
extern void SmcDeleteProperties (
SmcConn /* smcConn */,
int /* numProps */,
char ** /* propNames */
);
extern Status SmcGetProperties (
SmcConn /* smcConn */,
SmcPropReplyProc /* propReplyProc */,
SmPointer /* clientData */
);
extern Status SmcInteractRequest (
SmcConn /* smcConn */,
int /* dialogType */,
SmcInteractProc /* interactProc */,
SmPointer /* clientData */
);
extern void SmcInteractDone (
SmcConn /* smcConn */,
Bool /* cancelShutdown */
);
extern void SmcRequestSaveYourself (
SmcConn /* smcConn */,
int /* saveType */,
Bool /* shutdown */,
int /* interactStyle */,
Bool /* fast */,
Bool /* global */
);
extern Status SmcRequestSaveYourselfPhase2 (
SmcConn /* smcConn */,
SmcSaveYourselfPhase2Proc /* saveYourselfPhase2Proc */,
SmPointer /* clientData */
);
extern void SmcSaveYourselfDone (
SmcConn /* smcConn */,
Bool /* success */
);
extern int SmcProtocolVersion (
SmcConn /* smcConn */
);
extern int SmcProtocolRevision (
SmcConn /* smcConn */
);
extern char *SmcVendor (
SmcConn /* smcConn */
);
extern char *SmcRelease (
SmcConn /* smcConn */
);
extern char *SmcClientID (
SmcConn /* smcConn */
);
extern IceConn SmcGetIceConnection (
SmcConn /* smcConn */
);
extern Status SmsInitialize (
const char * /* vendor */,
const char * /* release */,
SmsNewClientProc /* newClientProc */,
SmPointer /* managerData */,
IceHostBasedAuthProc /* hostBasedAuthProc */,
int /* errorLength */,
char * /* errorStringRet */
);
extern char *SmsClientHostName (
SmsConn /* smsConn */
);
extern char *SmsGenerateClientID (
SmsConn /* smsConn */
);
extern Status SmsRegisterClientReply (
SmsConn /* smsConn */,
char * /* clientId */
);
extern void SmsSaveYourself (
SmsConn /* smsConn */,
int /* saveType */,
Bool /* shutdown */,
int /* interactStyle */,
Bool /* fast */
);
extern void SmsSaveYourselfPhase2 (
SmsConn /* smsConn */
);
extern void SmsInteract (
SmsConn /* smsConn */
);
extern void SmsDie (
SmsConn /* smsConn */
);
extern void SmsSaveComplete (
SmsConn /* smsConn */
);
extern void SmsShutdownCancelled (
SmsConn /* smsConn */
);
extern void SmsReturnProperties (
SmsConn /* smsConn */,
int /* numProps */,
SmProp ** /* props */
);
extern void SmsCleanUp (
SmsConn /* smsConn */
);
extern int SmsProtocolVersion (
SmsConn /* smsConn */
);
extern int SmsProtocolRevision (
SmsConn /* smsConn */
);
extern char *SmsClientID (
SmsConn /* smsConn */
);
extern IceConn SmsGetIceConnection (
SmsConn /* smsConn */
);
extern SmcErrorHandler SmcSetErrorHandler (
SmcErrorHandler /* handler */
);
extern SmsErrorHandler SmsSetErrorHandler (
SmsErrorHandler /* handler */
);
extern void SmFreeProperty (
SmProp * /* prop */
);
extern void SmFreeReasons (
int /* count */,
char ** /* reasonMsgs */
);
_XFUNCPROTOEND
#endif /* _SMLIB_H_ */

View File

@ -0,0 +1,206 @@
/*
Copyright 1993, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
/*
* Author: Ralph Mor, X Consortium
*/
#ifndef _SMPROTO_H_
#define _SMPROTO_H_
#include <X11/Xmd.h>
typedef struct {
CARD8 majorOpcode;
CARD8 minorOpcode;
CARD8 unused[2];
CARD32 length B32;
/* n ARRAY8 previousId */
} smRegisterClientMsg;
typedef struct {
CARD8 majorOpcode;
CARD8 minorOpcode;
CARD8 unused[2];
CARD32 length B32;
/* n ARRAY8 clientId */
} smRegisterClientReplyMsg;
typedef struct {
CARD8 majorOpcode;
CARD8 minorOpcode;
CARD8 unused1[2];
CARD32 length B32;
CARD8 saveType;
CARD8 shutdown;
CARD8 interactStyle;
CARD8 fast;
CARD8 unused2[4];
} smSaveYourselfMsg;
typedef struct {
CARD8 majorOpcode;
CARD8 minorOpcode;
CARD8 unused1[2];
CARD32 length B32;
CARD8 saveType;
CARD8 shutdown;
CARD8 interactStyle;
CARD8 fast;
CARD8 global;
CARD8 unused2[3];
} smSaveYourselfRequestMsg;
typedef struct {
CARD8 majorOpcode;
CARD8 minorOpcode;
CARD8 dialogType;
CARD8 unused;
CARD32 length B32;
} smInteractRequestMsg;
typedef struct {
CARD8 majorOpcode;
CARD8 minorOpcode;
CARD8 unused[2];
CARD32 length B32;
} smInteractMsg;
typedef struct {
CARD8 majorOpcode;
CARD8 minorOpcode;
CARD8 cancelShutdown;
CARD8 unused;
CARD32 length B32;
} smInteractDoneMsg;
typedef struct {
CARD8 majorOpcode;
CARD8 minorOpcode;
CARD8 success;
CARD8 unused;
CARD32 length B32;
} smSaveYourselfDoneMsg;
typedef struct {
CARD8 majorOpcode;
CARD8 minorOpcode;
CARD8 unused[2];
CARD32 length B32;
} smDieMsg;
typedef struct {
CARD8 majorOpcode;
CARD8 minorOpcode;
CARD8 unused[2];
CARD32 length B32;
} smShutdownCancelledMsg;
typedef struct {
CARD8 majorOpcode;
CARD8 minorOpcode;
CARD8 unused[2];
CARD32 length B32;
/* b LISTofARRAY8 reasons */
} smCloseConnectionMsg;
typedef struct {
CARD8 majorOpcode;
CARD8 minorOpcode;
CARD8 unused[2];
CARD32 length B32;
/* a LISTofPROPERTY properties */
} smSetPropertiesMsg;
typedef struct {
CARD8 majorOpcode;
CARD8 minorOpcode;
CARD8 unused[2];
CARD32 length B32;
/* a LISTofARRAY8 property names */
} smDeletePropertiesMsg;
typedef struct {
CARD8 majorOpcode;
CARD8 minorOpcode;
CARD8 unused[2];
CARD32 length B32;
} smGetPropertiesMsg;
typedef struct {
CARD8 majorOpcode;
CARD8 minorOpcode;
CARD8 unused[2];
CARD32 length B32;
/* a LISTofPROPERTY properties */
} smPropertiesReplyMsg;
typedef struct {
CARD8 majorOpcode;
CARD8 minorOpcode;
CARD8 unused[2];
CARD32 length B32;
} smSaveYourselfPhase2RequestMsg;
typedef struct {
CARD8 majorOpcode;
CARD8 minorOpcode;
CARD8 unused[2];
CARD32 length B32;
} smSaveYourselfPhase2Msg;
typedef struct {
CARD8 majorOpcode;
CARD8 minorOpcode;
CARD8 unused[2];
CARD32 length B32;
} smSaveCompleteMsg;
/*
* SIZEOF values. These better be multiples of 8.
*/
#define sz_smRegisterClientMsg 8
#define sz_smRegisterClientReplyMsg 8
#define sz_smSaveYourselfMsg 16
#define sz_smSaveYourselfRequestMsg 16
#define sz_smInteractRequestMsg 8
#define sz_smInteractMsg 8
#define sz_smInteractDoneMsg 8
#define sz_smSaveYourselfDoneMsg 8
#define sz_smDieMsg 8
#define sz_smShutdownCancelledMsg 8
#define sz_smCloseConnectionMsg 8
#define sz_smSetPropertiesMsg 8
#define sz_smDeletePropertiesMsg 8
#define sz_smGetPropertiesMsg 8
#define sz_smPropertiesReplyMsg 8
#define sz_smSaveYourselfPhase2RequestMsg 8
#define sz_smSaveYourselfPhase2Msg 8
#define sz_smSaveCompleteMsg 8
#endif /* _SMPROTO_H_ */

View File

@ -0,0 +1,168 @@
/***********************************************************
Copyright 1987, 1988, 1994, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
#ifndef _XtselectionI_h
#define _XtselectionI_h
#include "Intrinsic.h"
typedef struct _RequestRec *Request;
typedef struct _SelectRec *Select;
typedef struct _RequestRec {
Select ctx; /* logical owner */
Widget widget; /* widget actually receiving Selection events */
Window requestor;
Atom property;
Atom target;
Atom type;
int format;
XtPointer value;
unsigned long bytelength;
unsigned long offset;
XtIntervalId timeout;
XSelectionRequestEvent event; /* for XtGetSelectionRequest */
Boolean allSent;
} RequestRec;
typedef struct {
Atom prop;
Boolean avail;
} SelectionPropRec, *SelectionProp;
typedef struct {
Display *dpy;
Atom incr_atom, indirect_atom, timestamp_atom;
int propCount;
SelectionProp list;
} PropListRec, *PropList;
typedef struct _SelectRec {
Atom selection; /* constant */
Display *dpy; /* constant */
Widget widget;
Time time;
unsigned long serial;
XtConvertSelectionProc convert;
XtLoseSelectionProc loses;
XtSelectionDoneProc notify;
XtCancelConvertSelectionProc owner_cancel;
XtPointer owner_closure;
PropList prop_list;
Request req; /* state for local non-incr xfer */
int ref_count; /* of active transfers */
unsigned int incremental:1;
unsigned int free_when_done:1;
unsigned int was_disowned:1;
} SelectRec;
typedef struct _ParamRec {
Atom selection;
Atom param;
} ParamRec, *Param;
typedef struct _ParamInfoRec {
unsigned int count;
Param paramlist;
} ParamInfoRec, *ParamInfo;
typedef struct _QueuedRequestRec {
Atom selection;
Atom target;
Atom param;
XtSelectionCallbackProc callback;
XtPointer closure;
Time time;
Boolean incremental;
} QueuedRequestRec, *QueuedRequest;
typedef struct _QueuedRequestInfoRec {
int count;
Atom *selections;
QueuedRequest *requests;
} QueuedRequestInfoRec, *QueuedRequestInfo;
typedef struct {
XtSelectionCallbackProc *callbacks;
XtPointer *req_closure;
Atom property;
Atom *target;
Atom type;
int format;
char *value;
int bytelength;
int offset;
XtIntervalId timeout;
XtEventHandler proc;
Widget widget;
Time time;
Select ctx;
Boolean *incremental;
int current;
} CallBackInfoRec, *CallBackInfo;
typedef struct {
Atom target;
Atom property;
} IndirectPair;
#define IndirectPairWordSize 2
typedef struct {
int active_transfer_count;
} RequestWindowRec;
#define MAX_SELECTION_INCR(dpy) (((65536 < XMaxRequestSize(dpy)) ? \
(65536 << 2) : (XMaxRequestSize(dpy) << 2))-100)
#define MATCH_SELECT(event, info) ((event->time == info->time) && \
(event->requestor == XtWindow(info->widget)) && \
(event->selection == info->ctx->selection) && \
(event->target == *info->target))
#endif /* _XtselectionI_h */
/* DON'T ADD STUFF AFTER THIS #endif */

View File

@ -0,0 +1,562 @@
/***********************************************************
Copyright 1987, 1988, 1994, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
#ifndef _XtShell_h
#define _XtShell_h
#include <X11/SM/SMlib.h>
#include <X11/Intrinsic.h>
/***********************************************************************
*
* Shell Widget
*
***********************************************************************/
/*
* Shell-specific resources names, classes, and a representation type.
*/
#ifndef XTSTRINGDEFINES
#define _XtShell_h_Const const
#endif
/* $Xorg: makestrs.c,v 1.6 2001/02/09 02:03:17 xorgcvs Exp $ */
/* This file is automatically generated. */
/* Default ABI version -- Do not edit */
#ifdef XTSTRINGDEFINES
#define XtNiconName "iconName"
#define XtCIconName "IconName"
#define XtNiconPixmap "iconPixmap"
#define XtCIconPixmap "IconPixmap"
#define XtNiconWindow "iconWindow"
#define XtCIconWindow "IconWindow"
#define XtNiconMask "iconMask"
#define XtCIconMask "IconMask"
#define XtNwindowGroup "windowGroup"
#define XtCWindowGroup "WindowGroup"
#define XtNvisual "visual"
#define XtCVisual "Visual"
#define XtNtitleEncoding "titleEncoding"
#define XtCTitleEncoding "TitleEncoding"
#define XtNsaveUnder "saveUnder"
#define XtCSaveUnder "SaveUnder"
#define XtNtransient "transient"
#define XtCTransient "Transient"
#define XtNoverrideRedirect "overrideRedirect"
#define XtCOverrideRedirect "OverrideRedirect"
#define XtNtransientFor "transientFor"
#define XtCTransientFor "TransientFor"
#define XtNiconNameEncoding "iconNameEncoding"
#define XtCIconNameEncoding "IconNameEncoding"
#define XtNallowShellResize "allowShellResize"
#define XtCAllowShellResize "AllowShellResize"
#define XtNcreatePopupChildProc "createPopupChildProc"
#define XtCCreatePopupChildProc "CreatePopupChildProc"
#define XtNtitle "title"
#define XtCTitle "Title"
#ifndef XtRAtom
#define XtRAtom "Atom"
#endif
#define XtNargc "argc"
#define XtCArgc "Argc"
#define XtNargv "argv"
#define XtCArgv "Argv"
#define XtNiconX "iconX"
#define XtCIconX "IconX"
#define XtNiconY "iconY"
#define XtCIconY "IconY"
#define XtNinput "input"
#define XtCInput "Input"
#define XtNiconic "iconic"
#define XtCIconic "Iconic"
#define XtNinitialState "initialState"
#define XtCInitialState "InitialState"
#define XtNgeometry "geometry"
#define XtCGeometry "Geometry"
#define XtNbaseWidth "baseWidth"
#define XtCBaseWidth "BaseWidth"
#define XtNbaseHeight "baseHeight"
#define XtCBaseHeight "BaseHeight"
#define XtNwinGravity "winGravity"
#define XtCWinGravity "WinGravity"
#define XtNminWidth "minWidth"
#define XtCMinWidth "MinWidth"
#define XtNminHeight "minHeight"
#define XtCMinHeight "MinHeight"
#define XtNmaxWidth "maxWidth"
#define XtCMaxWidth "MaxWidth"
#define XtNmaxHeight "maxHeight"
#define XtCMaxHeight "MaxHeight"
#define XtNwidthInc "widthInc"
#define XtCWidthInc "WidthInc"
#define XtNheightInc "heightInc"
#define XtCHeightInc "HeightInc"
#define XtNminAspectY "minAspectY"
#define XtCMinAspectY "MinAspectY"
#define XtNmaxAspectY "maxAspectY"
#define XtCMaxAspectY "MaxAspectY"
#define XtNminAspectX "minAspectX"
#define XtCMinAspectX "MinAspectX"
#define XtNmaxAspectX "maxAspectX"
#define XtCMaxAspectX "MaxAspectX"
#define XtNwmTimeout "wmTimeout"
#define XtCWmTimeout "WmTimeout"
#define XtNwaitForWm "waitforwm"
#define XtCWaitForWm "Waitforwm"
#define XtNwaitforwm "waitforwm"
#define XtCWaitforwm "Waitforwm"
#define XtNclientLeader "clientLeader"
#define XtCClientLeader "ClientLeader"
#define XtNwindowRole "windowRole"
#define XtCWindowRole "WindowRole"
#define XtNurgency "urgency"
#define XtCUrgency "Urgency"
#define XtNcancelCallback "cancelCallback"
#define XtNcloneCommand "cloneCommand"
#define XtCCloneCommand "CloneCommand"
#define XtNconnection "connection"
#define XtCConnection "Connection"
#define XtNcurrentDirectory "currentDirectory"
#define XtCCurrentDirectory "CurrentDirectory"
#define XtNdieCallback "dieCallback"
#define XtNdiscardCommand "discardCommand"
#define XtCDiscardCommand "DiscardCommand"
#define XtNenvironment "environment"
#define XtCEnvironment "Environment"
#define XtNinteractCallback "interactCallback"
#define XtNjoinSession "joinSession"
#define XtCJoinSession "JoinSession"
#define XtNprogramPath "programPath"
#define XtCProgramPath "ProgramPath"
#define XtNresignCommand "resignCommand"
#define XtCResignCommand "ResignCommand"
#define XtNrestartCommand "restartCommand"
#define XtCRestartCommand "RestartCommand"
#define XtNrestartStyle "restartStyle"
#define XtCRestartStyle "RestartStyle"
#define XtNsaveCallback "saveCallback"
#define XtNsaveCompleteCallback "saveCompleteCallback"
#define XtNsessionID "sessionID"
#define XtCSessionID "SessionID"
#define XtNshutdownCommand "shutdownCommand"
#define XtCShutdownCommand "ShutdownCommand"
#define XtNerrorCallback "errorCallback"
#else
extern _XtShell_h_Const char XtShellStrings[];
#ifndef XtNiconName
#define XtNiconName ((char*)&XtShellStrings[0])
#endif
#ifndef XtCIconName
#define XtCIconName ((char*)&XtShellStrings[9])
#endif
#ifndef XtNiconPixmap
#define XtNiconPixmap ((char*)&XtShellStrings[18])
#endif
#ifndef XtCIconPixmap
#define XtCIconPixmap ((char*)&XtShellStrings[29])
#endif
#ifndef XtNiconWindow
#define XtNiconWindow ((char*)&XtShellStrings[40])
#endif
#ifndef XtCIconWindow
#define XtCIconWindow ((char*)&XtShellStrings[51])
#endif
#ifndef XtNiconMask
#define XtNiconMask ((char*)&XtShellStrings[62])
#endif
#ifndef XtCIconMask
#define XtCIconMask ((char*)&XtShellStrings[71])
#endif
#ifndef XtNwindowGroup
#define XtNwindowGroup ((char*)&XtShellStrings[80])
#endif
#ifndef XtCWindowGroup
#define XtCWindowGroup ((char*)&XtShellStrings[92])
#endif
#ifndef XtNvisual
#define XtNvisual ((char*)&XtShellStrings[104])
#endif
#ifndef XtCVisual
#define XtCVisual ((char*)&XtShellStrings[111])
#endif
#ifndef XtNtitleEncoding
#define XtNtitleEncoding ((char*)&XtShellStrings[118])
#endif
#ifndef XtCTitleEncoding
#define XtCTitleEncoding ((char*)&XtShellStrings[132])
#endif
#ifndef XtNsaveUnder
#define XtNsaveUnder ((char*)&XtShellStrings[146])
#endif
#ifndef XtCSaveUnder
#define XtCSaveUnder ((char*)&XtShellStrings[156])
#endif
#ifndef XtNtransient
#define XtNtransient ((char*)&XtShellStrings[166])
#endif
#ifndef XtCTransient
#define XtCTransient ((char*)&XtShellStrings[176])
#endif
#ifndef XtNoverrideRedirect
#define XtNoverrideRedirect ((char*)&XtShellStrings[186])
#endif
#ifndef XtCOverrideRedirect
#define XtCOverrideRedirect ((char*)&XtShellStrings[203])
#endif
#ifndef XtNtransientFor
#define XtNtransientFor ((char*)&XtShellStrings[220])
#endif
#ifndef XtCTransientFor
#define XtCTransientFor ((char*)&XtShellStrings[233])
#endif
#ifndef XtNiconNameEncoding
#define XtNiconNameEncoding ((char*)&XtShellStrings[246])
#endif
#ifndef XtCIconNameEncoding
#define XtCIconNameEncoding ((char*)&XtShellStrings[263])
#endif
#ifndef XtNallowShellResize
#define XtNallowShellResize ((char*)&XtShellStrings[280])
#endif
#ifndef XtCAllowShellResize
#define XtCAllowShellResize ((char*)&XtShellStrings[297])
#endif
#ifndef XtNcreatePopupChildProc
#define XtNcreatePopupChildProc ((char*)&XtShellStrings[314])
#endif
#ifndef XtCCreatePopupChildProc
#define XtCCreatePopupChildProc ((char*)&XtShellStrings[335])
#endif
#ifndef XtNtitle
#define XtNtitle ((char*)&XtShellStrings[356])
#endif
#ifndef XtCTitle
#define XtCTitle ((char*)&XtShellStrings[362])
#endif
#ifndef XtRAtom
#define XtRAtom ((char*)&XtShellStrings[368])
#endif
#ifndef XtNargc
#define XtNargc ((char*)&XtShellStrings[373])
#endif
#ifndef XtCArgc
#define XtCArgc ((char*)&XtShellStrings[378])
#endif
#ifndef XtNargv
#define XtNargv ((char*)&XtShellStrings[383])
#endif
#ifndef XtCArgv
#define XtCArgv ((char*)&XtShellStrings[388])
#endif
#ifndef XtNiconX
#define XtNiconX ((char*)&XtShellStrings[393])
#endif
#ifndef XtCIconX
#define XtCIconX ((char*)&XtShellStrings[399])
#endif
#ifndef XtNiconY
#define XtNiconY ((char*)&XtShellStrings[405])
#endif
#ifndef XtCIconY
#define XtCIconY ((char*)&XtShellStrings[411])
#endif
#ifndef XtNinput
#define XtNinput ((char*)&XtShellStrings[417])
#endif
#ifndef XtCInput
#define XtCInput ((char*)&XtShellStrings[423])
#endif
#ifndef XtNiconic
#define XtNiconic ((char*)&XtShellStrings[429])
#endif
#ifndef XtCIconic
#define XtCIconic ((char*)&XtShellStrings[436])
#endif
#ifndef XtNinitialState
#define XtNinitialState ((char*)&XtShellStrings[443])
#endif
#ifndef XtCInitialState
#define XtCInitialState ((char*)&XtShellStrings[456])
#endif
#ifndef XtNgeometry
#define XtNgeometry ((char*)&XtShellStrings[469])
#endif
#ifndef XtCGeometry
#define XtCGeometry ((char*)&XtShellStrings[478])
#endif
#ifndef XtNbaseWidth
#define XtNbaseWidth ((char*)&XtShellStrings[487])
#endif
#ifndef XtCBaseWidth
#define XtCBaseWidth ((char*)&XtShellStrings[497])
#endif
#ifndef XtNbaseHeight
#define XtNbaseHeight ((char*)&XtShellStrings[507])
#endif
#ifndef XtCBaseHeight
#define XtCBaseHeight ((char*)&XtShellStrings[518])
#endif
#ifndef XtNwinGravity
#define XtNwinGravity ((char*)&XtShellStrings[529])
#endif
#ifndef XtCWinGravity
#define XtCWinGravity ((char*)&XtShellStrings[540])
#endif
#ifndef XtNminWidth
#define XtNminWidth ((char*)&XtShellStrings[551])
#endif
#ifndef XtCMinWidth
#define XtCMinWidth ((char*)&XtShellStrings[560])
#endif
#ifndef XtNminHeight
#define XtNminHeight ((char*)&XtShellStrings[569])
#endif
#ifndef XtCMinHeight
#define XtCMinHeight ((char*)&XtShellStrings[579])
#endif
#ifndef XtNmaxWidth
#define XtNmaxWidth ((char*)&XtShellStrings[589])
#endif
#ifndef XtCMaxWidth
#define XtCMaxWidth ((char*)&XtShellStrings[598])
#endif
#ifndef XtNmaxHeight
#define XtNmaxHeight ((char*)&XtShellStrings[607])
#endif
#ifndef XtCMaxHeight
#define XtCMaxHeight ((char*)&XtShellStrings[617])
#endif
#ifndef XtNwidthInc
#define XtNwidthInc ((char*)&XtShellStrings[627])
#endif
#ifndef XtCWidthInc
#define XtCWidthInc ((char*)&XtShellStrings[636])
#endif
#ifndef XtNheightInc
#define XtNheightInc ((char*)&XtShellStrings[645])
#endif
#ifndef XtCHeightInc
#define XtCHeightInc ((char*)&XtShellStrings[655])
#endif
#ifndef XtNminAspectY
#define XtNminAspectY ((char*)&XtShellStrings[665])
#endif
#ifndef XtCMinAspectY
#define XtCMinAspectY ((char*)&XtShellStrings[676])
#endif
#ifndef XtNmaxAspectY
#define XtNmaxAspectY ((char*)&XtShellStrings[687])
#endif
#ifndef XtCMaxAspectY
#define XtCMaxAspectY ((char*)&XtShellStrings[698])
#endif
#ifndef XtNminAspectX
#define XtNminAspectX ((char*)&XtShellStrings[709])
#endif
#ifndef XtCMinAspectX
#define XtCMinAspectX ((char*)&XtShellStrings[720])
#endif
#ifndef XtNmaxAspectX
#define XtNmaxAspectX ((char*)&XtShellStrings[731])
#endif
#ifndef XtCMaxAspectX
#define XtCMaxAspectX ((char*)&XtShellStrings[742])
#endif
#ifndef XtNwmTimeout
#define XtNwmTimeout ((char*)&XtShellStrings[753])
#endif
#ifndef XtCWmTimeout
#define XtCWmTimeout ((char*)&XtShellStrings[763])
#endif
#ifndef XtNwaitForWm
#define XtNwaitForWm ((char*)&XtShellStrings[773])
#endif
#ifndef XtCWaitForWm
#define XtCWaitForWm ((char*)&XtShellStrings[783])
#endif
#ifndef XtNwaitforwm
#define XtNwaitforwm ((char*)&XtShellStrings[793])
#endif
#ifndef XtCWaitforwm
#define XtCWaitforwm ((char*)&XtShellStrings[803])
#endif
#ifndef XtNclientLeader
#define XtNclientLeader ((char*)&XtShellStrings[813])
#endif
#ifndef XtCClientLeader
#define XtCClientLeader ((char*)&XtShellStrings[826])
#endif
#ifndef XtNwindowRole
#define XtNwindowRole ((char*)&XtShellStrings[839])
#endif
#ifndef XtCWindowRole
#define XtCWindowRole ((char*)&XtShellStrings[850])
#endif
#ifndef XtNurgency
#define XtNurgency ((char*)&XtShellStrings[861])
#endif
#ifndef XtCUrgency
#define XtCUrgency ((char*)&XtShellStrings[869])
#endif
#ifndef XtNcancelCallback
#define XtNcancelCallback ((char*)&XtShellStrings[877])
#endif
#ifndef XtNcloneCommand
#define XtNcloneCommand ((char*)&XtShellStrings[892])
#endif
#ifndef XtCCloneCommand
#define XtCCloneCommand ((char*)&XtShellStrings[905])
#endif
#ifndef XtNconnection
#define XtNconnection ((char*)&XtShellStrings[918])
#endif
#ifndef XtCConnection
#define XtCConnection ((char*)&XtShellStrings[929])
#endif
#ifndef XtNcurrentDirectory
#define XtNcurrentDirectory ((char*)&XtShellStrings[940])
#endif
#ifndef XtCCurrentDirectory
#define XtCCurrentDirectory ((char*)&XtShellStrings[957])
#endif
#ifndef XtNdieCallback
#define XtNdieCallback ((char*)&XtShellStrings[974])
#endif
#ifndef XtNdiscardCommand
#define XtNdiscardCommand ((char*)&XtShellStrings[986])
#endif
#ifndef XtCDiscardCommand
#define XtCDiscardCommand ((char*)&XtShellStrings[1001])
#endif
#ifndef XtNenvironment
#define XtNenvironment ((char*)&XtShellStrings[1016])
#endif
#ifndef XtCEnvironment
#define XtCEnvironment ((char*)&XtShellStrings[1028])
#endif
#ifndef XtNinteractCallback
#define XtNinteractCallback ((char*)&XtShellStrings[1040])
#endif
#ifndef XtNjoinSession
#define XtNjoinSession ((char*)&XtShellStrings[1057])
#endif
#ifndef XtCJoinSession
#define XtCJoinSession ((char*)&XtShellStrings[1069])
#endif
#ifndef XtNprogramPath
#define XtNprogramPath ((char*)&XtShellStrings[1081])
#endif
#ifndef XtCProgramPath
#define XtCProgramPath ((char*)&XtShellStrings[1093])
#endif
#ifndef XtNresignCommand
#define XtNresignCommand ((char*)&XtShellStrings[1105])
#endif
#ifndef XtCResignCommand
#define XtCResignCommand ((char*)&XtShellStrings[1119])
#endif
#ifndef XtNrestartCommand
#define XtNrestartCommand ((char*)&XtShellStrings[1133])
#endif
#ifndef XtCRestartCommand
#define XtCRestartCommand ((char*)&XtShellStrings[1148])
#endif
#ifndef XtNrestartStyle
#define XtNrestartStyle ((char*)&XtShellStrings[1163])
#endif
#ifndef XtCRestartStyle
#define XtCRestartStyle ((char*)&XtShellStrings[1176])
#endif
#ifndef XtNsaveCallback
#define XtNsaveCallback ((char*)&XtShellStrings[1189])
#endif
#ifndef XtNsaveCompleteCallback
#define XtNsaveCompleteCallback ((char*)&XtShellStrings[1202])
#endif
#ifndef XtNsessionID
#define XtNsessionID ((char*)&XtShellStrings[1223])
#endif
#ifndef XtCSessionID
#define XtCSessionID ((char*)&XtShellStrings[1233])
#endif
#ifndef XtNshutdownCommand
#define XtNshutdownCommand ((char*)&XtShellStrings[1243])
#endif
#ifndef XtCShutdownCommand
#define XtCShutdownCommand ((char*)&XtShellStrings[1259])
#endif
#ifndef XtNerrorCallback
#define XtNerrorCallback ((char*)&XtShellStrings[1275])
#endif
#endif /* XTSTRINGDEFINES */
#ifndef XTSTRINGDEFINES
#undef _XtShell_h_Const
#endif
/* Class record constants */
typedef struct _ShellClassRec *ShellWidgetClass;
typedef struct _OverrideShellClassRec *OverrideShellWidgetClass;
typedef struct _WMShellClassRec *WMShellWidgetClass;
typedef struct _TransientShellClassRec *TransientShellWidgetClass;
typedef struct _TopLevelShellClassRec *TopLevelShellWidgetClass;
typedef struct _ApplicationShellClassRec *ApplicationShellWidgetClass;
typedef struct _SessionShellClassRec *SessionShellWidgetClass;
#ifndef SHELL
externalref WidgetClass shellWidgetClass;
externalref WidgetClass overrideShellWidgetClass;
externalref WidgetClass wmShellWidgetClass;
externalref WidgetClass transientShellWidgetClass;
externalref WidgetClass topLevelShellWidgetClass;
externalref WidgetClass applicationShellWidgetClass;
externalref WidgetClass sessionShellWidgetClass;
#endif
#endif /* _XtShell_h */
/* DON'T ADD STUFF AFTER THIS #endif */

View File

@ -0,0 +1,10 @@
#ifndef _XtShellInternal_h
#define _XtShellInternal_h
#include <X11/Xfuncproto.h>
_XFUNCPROTOBEGIN
extern void _XtShellGetCoordinates(Widget widget, Position *x, Position *y);
#endif /* _XtShellInternal_h */

View File

@ -0,0 +1,434 @@
/***********************************************************
Copyright 1987, 1988, 1994, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
/*
* ShellP.h - Private definitions for Shell widget
*
* Author: Paul Asente
* Digital Equipment Corporation
* Western Software Laboratory
* Date: Thu Dec 3, 1987
*/
#ifndef _XtShellPrivate_h
#define _XtShellPrivate_h
#include <X11/Shell.h>
/* *****
* ***** VendorP.h is included later on; it needs fields defined in the first
* ***** part of this header file
* *****
*/
_XFUNCPROTOBEGIN
/***********************************************************************
*
* Shell Widget Private Data
*
***********************************************************************/
/* New fields for the Shell widget class record */
typedef struct {
XtPointer extension; /* pointer to extension record */
} ShellClassPart;
typedef struct {
XtPointer next_extension; /* 1st 4 mandated for all extension records */
XrmQuark record_type; /* NULLQUARK; on ShellClassPart */
long version; /* must be XtShellExtensionVersion */
Cardinal record_size; /* sizeof(ShellClassExtensionRec) */
XtGeometryHandler root_geometry_manager;
} ShellClassExtensionRec, *ShellClassExtension;
#define XtShellExtensionVersion 1L
#define XtInheritRootGeometryManager ((XtGeometryHandler)_XtInherit)
typedef struct _ShellClassRec {
CoreClassPart core_class;
CompositeClassPart composite_class;
ShellClassPart shell_class;
} ShellClassRec;
externalref ShellClassRec shellClassRec;
/* New fields for the shell widget */
typedef struct {
char *geometry;
XtCreatePopupChildProc create_popup_child_proc;
XtGrabKind grab_kind;
Boolean spring_loaded;
Boolean popped_up;
Boolean allow_shell_resize;
Boolean client_specified; /* re-using old name */
#define _XtShellPositionValid ((Boolean)(1<<0))
#define _XtShellNotReparented ((Boolean)(1<<1))
#define _XtShellPPositionOK ((Boolean)(1<<2))
#define _XtShellGeometryParsed ((Boolean)(1<<3))
Boolean save_under;
Boolean override_redirect;
XtCallbackList popup_callback;
XtCallbackList popdown_callback;
Visual* visual;
} ShellPart;
typedef struct {
CorePart core;
CompositePart composite;
ShellPart shell;
} ShellRec, *ShellWidget;
/***********************************************************************
*
* OverrideShell Widget Private Data
*
***********************************************************************/
/* New fields for the OverrideShell widget class record */
typedef struct {
XtPointer extension; /* pointer to extension record */
} OverrideShellClassPart;
typedef struct _OverrideShellClassRec {
CoreClassPart core_class;
CompositeClassPart composite_class;
ShellClassPart shell_class;
OverrideShellClassPart override_shell_class;
} OverrideShellClassRec;
externalref OverrideShellClassRec overrideShellClassRec;
/* No new fields for the override shell widget */
typedef struct {int frabjous;} OverrideShellPart;
typedef struct {
CorePart core;
CompositePart composite;
ShellPart shell;
OverrideShellPart override;
} OverrideShellRec, *OverrideShellWidget;
/***********************************************************************
*
* WMShell Widget Private Data
*
***********************************************************************/
/* New fields for the WMShell widget class record */
typedef struct {
XtPointer extension; /* pointer to extension record */
} WMShellClassPart;
typedef struct _WMShellClassRec {
CoreClassPart core_class;
CompositeClassPart composite_class;
ShellClassPart shell_class;
WMShellClassPart wm_shell_class;
} WMShellClassRec;
externalref WMShellClassRec wmShellClassRec;
/* New fields for the WM shell widget */
typedef struct {
char *title;
int wm_timeout;
Boolean wait_for_wm;
Boolean transient;
Boolean urgency;
Widget client_leader;
String window_role;
struct _OldXSizeHints { /* pre-R4 Xlib structure */
long flags;
int x, y;
int width, height;
int min_width, min_height;
int max_width, max_height;
int width_inc, height_inc;
struct {
int x;
int y;
} min_aspect, max_aspect;
} size_hints;
XWMHints wm_hints;
int base_width, base_height;
int win_gravity;
Atom title_encoding;
} WMShellPart;
typedef struct {
CorePart core;
CompositePart composite;
ShellPart shell;
WMShellPart wm;
} WMShellRec, *WMShellWidget;
_XFUNCPROTOEND
#include <X11/VendorP.h>
_XFUNCPROTOBEGIN
/***********************************************************************
*
* TransientShell Widget Private Data
*
***********************************************************************/
/* New fields for the TransientShell widget class record */
typedef struct {
XtPointer extension; /* pointer to extension record */
} TransientShellClassPart;
typedef struct _TransientShellClassRec {
CoreClassPart core_class;
CompositeClassPart composite_class;
ShellClassPart shell_class;
WMShellClassPart wm_shell_class;
VendorShellClassPart vendor_shell_class;
TransientShellClassPart transient_shell_class;
} TransientShellClassRec;
externalref TransientShellClassRec transientShellClassRec;
/* New fields for the transient shell widget */
typedef struct {
Widget transient_for;
} TransientShellPart;
typedef struct {
CorePart core;
CompositePart composite;
ShellPart shell;
WMShellPart wm;
VendorShellPart vendor;
TransientShellPart transient;
} TransientShellRec, *TransientShellWidget;
/***********************************************************************
*
* TopLevelShell Widget Private Data
*
***********************************************************************/
/* New fields for the TopLevelShell widget class record */
typedef struct {
XtPointer extension; /* pointer to extension record */
} TopLevelShellClassPart;
typedef struct _TopLevelShellClassRec {
CoreClassPart core_class;
CompositeClassPart composite_class;
ShellClassPart shell_class;
WMShellClassPart wm_shell_class;
VendorShellClassPart vendor_shell_class;
TopLevelShellClassPart top_level_shell_class;
} TopLevelShellClassRec;
externalref TopLevelShellClassRec topLevelShellClassRec;
/* New fields for the top level shell widget */
typedef struct {
char *icon_name;
Boolean iconic;
Atom icon_name_encoding;
} TopLevelShellPart;
typedef struct {
CorePart core;
CompositePart composite;
ShellPart shell;
WMShellPart wm;
VendorShellPart vendor;
TopLevelShellPart topLevel;
} TopLevelShellRec, *TopLevelShellWidget;
/***********************************************************************
*
* ApplicationShell Widget Private Data
*
***********************************************************************/
/* New fields for the ApplicationShell widget class record */
typedef struct {
XtPointer extension; /* pointer to extension record */
} ApplicationShellClassPart;
typedef struct _ApplicationShellClassRec {
CoreClassPart core_class;
CompositeClassPart composite_class;
ShellClassPart shell_class;
WMShellClassPart wm_shell_class;
VendorShellClassPart vendor_shell_class;
TopLevelShellClassPart top_level_shell_class;
ApplicationShellClassPart application_shell_class;
} ApplicationShellClassRec;
externalref ApplicationShellClassRec applicationShellClassRec;
/* New fields for the application shell widget */
typedef struct {
#if defined(__cplusplus) || defined(c_plusplus)
char *c_class;
#else
char *class;
#endif
XrmClass xrm_class;
int argc;
char **argv;
} ApplicationShellPart;
typedef struct {
CorePart core;
CompositePart composite;
ShellPart shell;
WMShellPart wm;
VendorShellPart vendor;
TopLevelShellPart topLevel;
ApplicationShellPart application;
} ApplicationShellRec, *ApplicationShellWidget;
/***********************************************************************
*
* SessionShell Widget Private Data
*
***********************************************************************/
/* New fields for the SessionShell widget class record */
typedef struct {
XtPointer extension; /* pointer to extension record */
} SessionShellClassPart;
typedef struct _SessionShellClassRec {
CoreClassPart core_class;
CompositeClassPart composite_class;
ShellClassPart shell_class;
WMShellClassPart wm_shell_class;
VendorShellClassPart vendor_shell_class;
TopLevelShellClassPart top_level_shell_class;
ApplicationShellClassPart application_shell_class;
SessionShellClassPart session_shell_class;
} SessionShellClassRec;
externalref SessionShellClassRec sessionShellClassRec;
typedef struct _XtSaveYourselfRec *XtSaveYourself; /* implementation-private */
/* New fields for the session shell widget */
typedef struct {
SmcConn connection;
String session_id;
String* restart_command;
String* clone_command;
String* discard_command;
String* resign_command;
String* shutdown_command;
String* environment;
String current_dir;
String program_path;
unsigned char restart_style;
unsigned char checkpoint_state;
Boolean join_session;
XtCallbackList save_callbacks;
XtCallbackList interact_callbacks;
XtCallbackList cancel_callbacks;
XtCallbackList save_complete_callbacks;
XtCallbackList die_callbacks;
XtCallbackList error_callbacks;
XtSaveYourself save;
XtInputId input_id;
XtPointer ses20;
XtPointer ses19;
XtPointer ses18;
XtPointer ses17;
XtPointer ses16;
XtPointer ses15;
XtPointer ses14;
XtPointer ses13;
XtPointer ses12;
XtPointer ses11;
XtPointer ses10;
XtPointer ses9;
XtPointer ses8;
XtPointer ses7;
XtPointer ses6;
XtPointer ses5;
XtPointer ses4;
XtPointer ses3;
XtPointer ses2;
XtPointer ses1;
} SessionShellPart;
typedef struct {
CorePart core;
CompositePart composite;
ShellPart shell;
WMShellPart wm;
VendorShellPart vendor;
TopLevelShellPart topLevel;
ApplicationShellPart application;
SessionShellPart session;
} SessionShellRec, *SessionShellWidget;
_XFUNCPROTOEND
#endif /* _XtShellPrivate_h */

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,106 @@
/*
* Copyright (c) 1991, Oracle and/or its affiliates. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
/************************************************************
Copyright 1991, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
***********************************************************/
/*
* Floating Accent
*/
#define SunXK_FA_Grave 0x1005FF00
#define SunXK_FA_Circum 0x1005FF01
#define SunXK_FA_Tilde 0x1005FF02
#define SunXK_FA_Acute 0x1005FF03
#define SunXK_FA_Diaeresis 0x1005FF04
#define SunXK_FA_Cedilla 0x1005FF05
/*
* Miscellaneous Functions
*/
#define SunXK_F36 0x1005FF10 /* Labeled F11 */
#define SunXK_F37 0x1005FF11 /* Labeled F12 */
#define SunXK_Sys_Req 0x1005FF60
#define SunXK_Print_Screen 0x0000FF61 /* Same as XK_Print */
/*
* International & Multi-Key Character Composition
*/
#define SunXK_Compose 0x0000FF20 /* Same as XK_Multi_key */
#define SunXK_AltGraph 0x0000FF7E /* Same as XK_Mode_switch */
/*
* Cursor Control
*/
#define SunXK_PageUp 0x0000FF55 /* Same as XK_Prior */
#define SunXK_PageDown 0x0000FF56 /* Same as XK_Next */
/*
* Open Look Functions
*/
#define SunXK_Undo 0x0000FF65 /* Same as XK_Undo */
#define SunXK_Again 0x0000FF66 /* Same as XK_Redo */
#define SunXK_Find 0x0000FF68 /* Same as XK_Find */
#define SunXK_Stop 0x0000FF69 /* Same as XK_Cancel */
#define SunXK_Props 0x1005FF70
#define SunXK_Front 0x1005FF71
#define SunXK_Copy 0x1005FF72
#define SunXK_Open 0x1005FF73
#define SunXK_Paste 0x1005FF74
#define SunXK_Cut 0x1005FF75
#define SunXK_PowerSwitch 0x1005FF76
#define SunXK_AudioLowerVolume 0x1005FF77
#define SunXK_AudioMute 0x1005FF78
#define SunXK_AudioRaiseVolume 0x1005FF79
#define SunXK_VideoDegauss 0x1005FF7A
#define SunXK_VideoLowerBrightness 0x1005FF7B
#define SunXK_VideoRaiseBrightness 0x1005FF7C
#define SunXK_PowerSwitchShift 0x1005FF7D

View File

@ -0,0 +1,129 @@
/************************************************************
Copyright (c) 1993, Oracle and/or its affiliates. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice (including the next
paragraph) shall be included in all copies or substantial portions of the
Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
********************************************************/
/*
Copyright 1994, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
/* $XFree86: xc/lib/Xt/ThreadsI.h,v 3.5 2001/12/14 19:56:31 dawes Exp $ */
#ifndef _XtThreadsI_h
#define _XtThreadsI_h
#include <X11/XlibConf.h>
#ifdef XTHREADS
typedef struct _LockRec *LockPtr;
typedef void (*ThreadAppProc)(
XtAppContext /* app */
);
typedef void (*ThreadAppYieldLockProc)(
XtAppContext, /* app */
Boolean*, /* push_thread */
Boolean*, /* pushed_thread */
int* /* level */
);
typedef void (*ThreadAppRestoreLockProc)(
XtAppContext /* app */,
int, /* level */
Boolean* /* pushed_thread */
);
_XFUNCPROTOBEGIN
extern void (*_XtProcessLock)(
void
);
extern void (*_XtProcessUnlock)(
void
);
extern void (*_XtInitAppLock)(
XtAppContext /* app */
);
_XFUNCPROTOEND
#define INIT_APP_LOCK(app) if(_XtInitAppLock) (*_XtInitAppLock)(app)
#define FREE_APP_LOCK(app) if(app && app->free_lock)(*app->free_lock)(app)
#define LOCK_PROCESS if(_XtProcessLock)(*_XtProcessLock)()
#define UNLOCK_PROCESS if(_XtProcessUnlock)(*_XtProcessUnlock)()
#define LOCK_APP(app) if(app && app->lock)(*app->lock)(app)
#define UNLOCK_APP(app) if(app && app->unlock)(*app->unlock)(app)
#define YIELD_APP_LOCK(app,push,pushed,level)\
if(app && app->yield_lock) (*app->yield_lock)(app,push,pushed,level)
#define RESTORE_APP_LOCK(app,level,pushed)\
if(app && app->restore_lock) (*app->restore_lock)(app,level,pushed)
#define WIDGET_TO_APPCON(w) \
XtAppContext app = (w && _XtProcessLock ? \
XtWidgetToApplicationContext(w) : NULL)
#define DPY_TO_APPCON(d) \
XtAppContext app = (_XtProcessLock ? XtDisplayToApplicationContext(d): NULL)
#else /* defined(XTHREADS) */
#define LOCK_PROCESS
#define UNLOCK_PROCESS
#define LOCK_APP(app)
#define UNLOCK_APP(app)
#define INIT_APP_LOCK(app)
#define FREE_APP_LOCK(app)
#define WIDGET_TO_APPCON(w)
#define DPY_TO_APPCON(d)
#endif /* !defined(XTHREADS) */
#endif /* _XtThreadsI_h */

View File

@ -0,0 +1,606 @@
/***********************************************************
Copyright 1987, 1988, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
/*
* TranslateI.h - Header file private to translation management
*
* Author: Gabe Beged-Dov, HP
*
* Former Author: Charles Haynes
* Digital Equipment Corporation
* Western Research Laboratory
* Date: Sat Aug 29 1987
*/
/*#define REFCNT_TRANSLATIONS*/
#define CACHE_TRANSLATIONS
#define TM_NO_MATCH (-2)
#define _XtRStateTablePair "_XtStateTablePair"
typedef unsigned char TMByteCard;
typedef unsigned short TMShortCard;
typedef unsigned long TMLongCard;
typedef short TMShortInt;
typedef struct _TMTypeMatchRec *TMTypeMatch;
typedef struct _TMModifierMatchRec *TMModifierMatch;
typedef struct _TMEventRec *TMEventPtr;
typedef Boolean (*MatchProc)(TMTypeMatch typeMatch,
TMModifierMatch modMatch,
TMEventPtr eventSeq);
typedef struct _ModToKeysymTable {
Modifiers mask;
int count;
int idx;
} ModToKeysymTable;
typedef struct _LateBindings {
unsigned int knot:1;
unsigned int pair:1;
unsigned short ref_count; /* garbage collection */
KeySym keysym;
} LateBindings, *LateBindingsPtr;
typedef short ModifierMask;
typedef struct _ActionsRec *ActionPtr;
typedef struct _ActionsRec {
int idx; /* index into quarkTable to find proc */
String *params; /* pointer to array of params */
Cardinal num_params; /* number of params */
ActionPtr next; /* next action to perform */
} ActionRec;
typedef struct _XtStateRec *StatePtr;
typedef struct _XtStateRec {
unsigned int isCycleStart:1;
unsigned int isCycleEnd:1;
TMShortCard typeIndex;
TMShortCard modIndex;
ActionPtr actions; /* rhs list of actions to perform */
StatePtr nextLevel;
}StateRec;
#define XtTableReplace 0
#define XtTableAugment 1
#define XtTableOverride 2
#define XtTableUnmerge 3
typedef unsigned int _XtTranslateOp;
/*
* New Definitions
*/
typedef struct _TMModifierMatchRec{
TMLongCard modifiers;
TMLongCard modifierMask;
LateBindingsPtr lateModifiers;
Boolean standard;
}TMModifierMatchRec;
typedef struct _TMTypeMatchRec{
TMLongCard eventType;
TMLongCard eventCode;
TMLongCard eventCodeMask;
MatchProc matchEvent;
}TMTypeMatchRec;
typedef struct _TMBranchHeadRec {
unsigned int isSimple:1;
unsigned int hasActions:1;
unsigned int hasCycles:1;
unsigned int more:13;
TMShortCard typeIndex;
TMShortCard modIndex;
}TMBranchHeadRec, *TMBranchHead;
/* NOTE: elements of this structure must match those of
* TMComplexStateTreeRec and TMParseStateTreeRec.
*/
typedef struct _TMSimpleStateTreeRec{
unsigned int isSimple:1;
unsigned int isAccelerator:1;
unsigned int mappingNotifyInterest:1;
unsigned int refCount:13;
TMShortCard numBranchHeads;
TMShortCard numQuarks; /* # of entries in quarkTbl */
TMShortCard unused; /* to ensure same alignment */
TMBranchHeadRec *branchHeadTbl;
XrmQuark *quarkTbl; /* table of quarkified rhs*/
}TMSimpleStateTreeRec, *TMSimpleStateTree;
/* NOTE: elements of this structure must match those of
* TMSimpleStateTreeRec and TMParseStateTreeRec.
*/
typedef struct _TMComplexStateTreeRec{
unsigned int isSimple:1;
unsigned int isAccelerator:1;
unsigned int mappingNotifyInterest:1;
unsigned int refCount:13;
TMShortCard numBranchHeads;
TMShortCard numQuarks; /* # of entries in quarkTbl */
TMShortCard numComplexBranchHeads;
TMBranchHeadRec *branchHeadTbl;
XrmQuark *quarkTbl; /* table of quarkified rhs*/
StatePtr *complexBranchHeadTbl;
}TMComplexStateTreeRec, *TMComplexStateTree;
/* NOTE: elements of this structure must match those of
* TMSimpleStateTreeRec and TMComplexStateTreeRec.
*/
typedef struct _TMParseStateTreeRec{
unsigned int isSimple:1;
unsigned int isAccelerator:1;
unsigned int mappingNotifyInterest:1;
unsigned int isStackQuarks:1;
unsigned int isStackBranchHeads:1;
unsigned int isStackComplexBranchHeads:1;
unsigned int unused:10; /* to ensure correct alignment */
TMShortCard numBranchHeads;
TMShortCard numQuarks; /* # of entries in quarkTbl */
TMShortCard numComplexBranchHeads;
TMBranchHeadRec *branchHeadTbl;
XrmQuark *quarkTbl; /* table of quarkified rhs*/
StatePtr *complexBranchHeadTbl;
TMShortCard branchHeadTblSize;
TMShortCard quarkTblSize; /*total size of quarkTbl */
TMShortCard complexBranchHeadTblSize;
StatePtr head;
}TMParseStateTreeRec, *TMParseStateTree;
typedef union _TMStateTreeRec{
TMSimpleStateTreeRec simple;
TMParseStateTreeRec parse;
TMComplexStateTreeRec complex;
}*TMStateTree, **TMStateTreePtr, **TMStateTreeList;
typedef struct _TMSimpleBindProcsRec {
XtActionProc *procs;
}TMSimpleBindProcsRec, *TMSimpleBindProcs;
typedef struct _TMComplexBindProcsRec {
Widget widget; /*widgetID to pass to action Proc*/
XtTranslations aXlations;
XtActionProc *procs;
}TMComplexBindProcsRec, *TMComplexBindProcs;
typedef struct _TMSimpleBindDataRec {
unsigned int isComplex:1; /* must be first */
TMSimpleBindProcsRec bindTbl[1]; /* variable length */
}TMSimpleBindDataRec, *TMSimpleBindData;
typedef struct _TMComplexBindDataRec {
unsigned int isComplex:1; /* must be first */
struct _ATranslationData *accel_context; /* for GetValues */
TMComplexBindProcsRec bindTbl[1]; /* variable length */
}TMComplexBindDataRec, *TMComplexBindData;
typedef union _TMBindDataRec{
TMSimpleBindDataRec simple;
TMComplexBindDataRec complex;
}*TMBindData;
typedef struct _TranslationData{
unsigned char hasBindings; /* must be first */
unsigned char operation; /*replace,augment,override*/
TMShortCard numStateTrees;
struct _TranslationData *composers[2];
EventMask eventMask;
TMStateTree stateTreeTbl[1]; /* variable length */
}TranslationData;
/*
* ATranslations is returned by GetValues for translations that contain
* accelerators. The TM can differentiate between this and TranslationData
* (that don't have a bindTbl) by looking at the first field (hasBindings)
* of either structure. All ATranslationData structures associated with a
* widget are chained off the BindData record of the widget.
*/
typedef struct _ATranslationData{
unsigned char hasBindings; /* must be first */
unsigned char operation;
struct _TranslationData *xlations; /* actual translations */
struct _ATranslationData *next; /* chain the contexts together */
TMComplexBindProcsRec bindTbl[1]; /* accelerator bindings */
}ATranslationData, *ATranslations;
typedef struct _TMConvertRec {
XtTranslations old; /* table to merge into */
XtTranslations new; /* table to merge from */
} TMConvertRec;
#define _XtEventTimerEventType ((TMLongCard)~0L)
#define KeysymModMask (1L<<27) /* private to TM */
#define AnyButtonMask (1L<<28) /* private to TM */
typedef struct _EventRec {
TMLongCard modifiers;
TMLongCard modifierMask;
LateBindingsPtr lateModifiers;
TMLongCard eventType;
TMLongCard eventCode;
TMLongCard eventCodeMask;
MatchProc matchEvent;
Boolean standard;
} Event;
typedef struct _EventSeqRec *EventSeqPtr;
typedef struct _EventSeqRec {
Event event; /* X event description */
StatePtr state; /* private to state table builder */
EventSeqPtr next; /* next event on line */
ActionPtr actions; /* r.h.s. list of actions to perform */
} EventSeqRec;
typedef EventSeqRec EventRec;
typedef EventSeqPtr EventPtr;
typedef struct _TMEventRec {
XEvent *xev;
Event event;
}TMEventRec;
typedef struct _ActionHookRec {
struct _ActionHookRec* next; /* must remain first */
XtAppContext app;
XtActionHookProc proc;
XtPointer closure;
} ActionHookRec, *ActionHook;
/* choose a number between 2 and 8 */
#define TMKEYCACHELOG2 6
#define TMKEYCACHESIZE (1<<TMKEYCACHELOG2)
typedef struct _KeyCacheRec {
unsigned char modifiers_return[256]; /* constant per KeyCode, key proc */
KeyCode keycode[TMKEYCACHESIZE];
unsigned char modifiers[TMKEYCACHESIZE];
KeySym keysym[TMKEYCACHESIZE];
} TMKeyCache;
typedef struct _TMKeyContextRec {
XEvent *event;
unsigned long serial;
KeySym keysym;
Modifiers modifiers;
TMKeyCache keycache; /* keep this last, to keep offsets to others small */
} TMKeyContextRec, *TMKeyContext;
typedef struct _TMGlobalRec{
TMTypeMatchRec **typeMatchSegmentTbl;
TMShortCard numTypeMatches;
TMShortCard numTypeMatchSegments;
TMShortCard typeMatchSegmentTblSize;
TMModifierMatchRec **modMatchSegmentTbl;
TMShortCard numModMatches;
TMShortCard numModMatchSegments;
TMShortCard modMatchSegmentTblSize;
Boolean newMatchSemantics;
#ifdef TRACE_TM
XtTranslations *tmTbl;
TMShortCard numTms;
TMShortCard tmTblSize;
struct _TMBindCacheRec **bindCacheTbl;
TMShortCard numBindCache;
TMShortCard bindCacheTblSize;
TMShortCard numLateBindings;
TMShortCard numBranchHeads;
TMShortCard numComplexStates;
TMShortCard numComplexActions;
#endif /* TRACE_TM */
}TMGlobalRec;
_XFUNCPROTOBEGIN
extern TMGlobalRec _XtGlobalTM;
#define TM_MOD_SEGMENT_SIZE 16
#define TM_TYPE_SEGMENT_SIZE 16
#define TMGetTypeMatch(idx) \
((TMTypeMatch) \
&((_XtGlobalTM.typeMatchSegmentTbl[((idx) >> 4)])[(idx) & 15]))
#define TMGetModifierMatch(idx) \
((TMModifierMatch) \
&((_XtGlobalTM.modMatchSegmentTbl[(idx) >> 4])[(idx) & 15]))
/* Useful Access Macros */
#define TMNewMatchSemantics() (_XtGlobalTM.newMatchSemantics)
#define TMBranchMore(branch) (branch->more)
#define TMComplexBranchHead(tree, br) \
(((TMComplexStateTree)tree)->complexBranchHeadTbl[TMBranchMore(br)])
#define TMGetComplexBindEntry(bindData, idx) \
((TMComplexBindProcs)&(((TMComplexBindData)bindData)->bindTbl[idx]))
#define TMGetSimpleBindEntry(bindData, idx) \
((TMSimpleBindProcs)&(((TMSimpleBindData)bindData)->bindTbl[idx]))
#define _InitializeKeysymTables(dpy, pd) \
if (pd->keysyms == NULL) \
_XtBuildKeysymTables(dpy, pd)
/*
* Internal Functions
*/
extern void _XtPopup(
Widget /* widget */,
XtGrabKind /* grab_kind */,
_XtBoolean /* spring_loaded */
);
extern String _XtPrintXlations(
Widget /* w */,
XtTranslations /* xlations */,
Widget /* accelWidget */,
_XtBoolean /* includeRHS */
);
extern void _XtRegisterGrabs(
Widget /* widget */
);
extern XtPointer _XtInitializeActionData(
struct _XtActionsRec * /* actions */,
Cardinal /* count */,
_XtBoolean /* inPlace */
);
extern void _XtAddEventSeqToStateTree(
EventSeqPtr /* eventSeq */,
TMParseStateTree /* stateTree */
);
extern Boolean _XtMatchUsingStandardMods(
TMTypeMatch /* typeMatch */,
TMModifierMatch /* modMatch */,
TMEventPtr /* eventSeq */
);
extern Boolean _XtMatchUsingDontCareMods(
TMTypeMatch /* typeMatch */,
TMModifierMatch /* modMatch */,
TMEventPtr /* eventSeq */
);
extern Boolean _XtRegularMatch(
TMTypeMatch /* typeMatch */,
TMModifierMatch /* modMatch */,
TMEventPtr /* eventSeq */
);
extern Boolean _XtMatchAtom(
TMTypeMatch /* typeMatch */,
TMModifierMatch /* modMatch */,
TMEventPtr /* eventSeq */
);
extern void _XtTranslateEvent(
Widget /* widget */,
XEvent* /* event */
);
#include "CallbackI.h"
#include "EventI.h"
#include "HookObjI.h"
#include "PassivGraI.h"
#include "ThreadsI.h"
#include "InitialI.h"
#include "ResourceI.h"
#include "StringDefs.h"
extern void _XtBuildKeysymTables(Display *dpy, XtPerDisplay pd);
#ifndef NO_MIT_HACKS
extern void _XtDisplayTranslations(
Widget /* widget */,
XEvent* /* event */,
String* /* params */,
Cardinal* /* num_params */
);
extern void _XtDisplayAccelerators(
Widget /* widget */,
XEvent* /* event */,
String* /* params */,
Cardinal* /* num_params */
);
extern void _XtDisplayInstalledAccelerators(
Widget /* widget */,
XEvent* /* event */,
String* /* params */,
Cardinal* /* num_params */
);
#endif /* ifndef NO_MIT_HACKS */
extern void _XtPopupInitialize(
XtAppContext /* app_context */
);
extern void _XtBindActions(
Widget /* widget */,
XtTM /* tm_rec */
);
extern Boolean _XtComputeLateBindings(
Display* /* dpy */,
LateBindingsPtr /* lateModifiers */,
Modifiers* /* computed */,
Modifiers* /* computedMask */
);
extern XtTranslations _XtCreateXlations(
TMStateTree * /* stateTrees */,
TMShortCard /* numStateTrees */,
XtTranslations /* first */,
XtTranslations /* second */
);
extern Boolean _XtCvtMergeTranslations(
Display* /* dpy */,
XrmValuePtr /* args */,
Cardinal* /* num_args */,
XrmValuePtr /* from */,
XrmValuePtr /* to */,
XtPointer* /* closure_ret */
);
void _XtRemoveStateTreeByIndex(
XtTranslations /* xlations */,
TMShortCard /* i */);
void _XtFreeTranslations(
XtAppContext /* app */,
XrmValuePtr /* toVal */,
XtPointer /* closure */,
XrmValuePtr /* args */,
Cardinal* /* num_args */
);
extern TMShortCard _XtGetModifierIndex(
Event* /* event */
);
extern TMShortCard _XtGetQuarkIndex(
TMParseStateTree /* stateTreePtr */,
XrmQuark /* quark */
);
extern XtTranslations _XtGetTranslationValue(
Widget /* widget */
);
extern TMShortCard _XtGetTypeIndex(
Event* /* event */
);
extern void _XtGrabInitialize(
XtAppContext /* app */
);
extern void _XtInstallTranslations(
Widget /* widget */
);
extern void _XtRemoveTranslations(
Widget /* widget */
);
extern void _XtDestroyTMData(
Widget /* widget */
);
extern void _XtMergeTranslations(
Widget /* widget */,
XtTranslations /* newXlations */,
_XtTranslateOp /* operation */
);
extern void _XtActionInitialize(
XtAppContext /* app */
);
extern TMStateTree _XtParseTreeToStateTree(
TMParseStateTree /* parseTree */
);
extern String _XtPrintActions(
ActionRec* /* actions */,
XrmQuark* /* quarkTbl */
);
extern String _XtPrintState(
TMStateTree /* stateTree */,
TMBranchHead /* branchHead */);
extern String _XtPrintEventSeq(
EventSeqPtr /* eventSeq */,
Display* /* dpy */
);
typedef Boolean (*_XtTraversalProc)(
StatePtr /* state */,
XtPointer /* data */
);
extern void _XtTraverseStateTree(
TMStateTree /* tree */,
_XtTraversalProc /* func */,
XtPointer /* data */
);
extern void _XtTranslateInitialize(
void
);
extern void _XtAddTMConverters(
ConverterTable /* table */
);
extern void _XtUnbindActions(
Widget /* widget */,
XtTranslations /* xlations */,
TMBindData /* bindData */
);
extern void _XtUnmergeTranslations(
Widget /* widget */,
XtTranslations /* xlations */
);
/* TMKey.c */
extern void _XtAllocTMContext(XtPerDisplay pd);
_XFUNCPROTOEND

View File

@ -0,0 +1,66 @@
/*
Copyright 1985, 1986, 1987, 1988, 1989, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
#ifndef _VarargsI_h_
#define _VarargsI_h_
#include <stdarg.h>
/* private routines */
_XFUNCPROTOBEGIN
extern void _XtCountVaList(
va_list /*var*/, int* /*total_count*/, int* /*typed_count*/
);
extern void _XtVaToArgList(
Widget /*widget*/, va_list /*var*/, int /*max_count*/, ArgList* /*args_return*/, Cardinal* /*num_args_return*/
);
extern void _XtVaToTypedArgList(
va_list /*var*/, int /*count*/, XtTypedArgList* /*args_return*/, Cardinal* /*num_args_return*/
);
extern XtTypedArgList _XtVaCreateTypedArgList(
va_list /*var*/, int /*count*/
);
extern void _XtFreeArgList(
ArgList /*args*/, int /*total_count*/, int /*typed_count*/
);
extern void _XtGetApplicationResources(
Widget /*w*/, XtPointer /*base*/, XtResourceList /*resources*/, Cardinal /*num_resources*/, ArgList /*args*/, Cardinal /*num_args*/, XtTypedArgList /*typed_args*/, Cardinal /*num_typed_args*/
);
extern void _XtGetSubresources(
Widget /*w*/, XtPointer /*base*/, const char* /*name*/, const char* /*class*/, XtResourceList /*resources*/, Cardinal /*num_resources*/, ArgList /*args*/, Cardinal /*num_args*/, XtTypedArgList /*typed_args*/, Cardinal /*num_typed_args*/
);
_XFUNCPROTOEND
#endif /* _VarargsI_h_ */

View File

@ -0,0 +1,70 @@
/***********************************************************
Copyright 1987, 1988, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
#ifndef _XtVendor_h
#define _XtVendor_h
#include <X11/Intrinsic.h>
/***********************************************************************
*
* VendorShell Widget
*
***********************************************************************/
/* Class record constants */
typedef struct _VendorShellClassRec *VendorShellWidgetClass;
_XFUNCPROTOBEGIN
externalref WidgetClass vendorShellWidgetClass;
_XFUNCPROTOEND
#endif /* _XtVendor_h */
/* DON'T ADD STUFF AFTER THIS #endif */

View File

@ -0,0 +1,102 @@
/***********************************************************
Copyright 1987, 1988, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
/*
* VendorP.h - Private definitions for VendorShell widget
*
* Author: Paul Asente
* Digital Equipment Corporation
* Western Software Laboratory
* Date: Thu Dec 3, 1987
*/
/***********************************************************************
*
* VendorShell Widget Private Data
*
***********************************************************************/
#ifndef _XtVendorPrivate_h
#define _XtVendorPrivate_h
#include <X11/Vendor.h>
/* New fields for the VendorShell widget class record */
_XFUNCPROTOBEGIN
typedef struct {
XtPointer extension; /* pointer to extension record */
} VendorShellClassPart;
typedef struct _VendorShellClassRec {
CoreClassPart core_class;
CompositeClassPart composite_class;
ShellClassPart shell_class;
WMShellClassPart wm_shell_class;
VendorShellClassPart vendor_shell_class;
} VendorShellClassRec;
externalref VendorShellClassRec vendorShellClassRec;
/* New fields for the vendor shell widget. */
typedef struct {
int vendor_specific;
} VendorShellPart;
typedef struct {
CorePart core;
CompositePart composite;
ShellPart shell;
WMShellPart wm;
VendorShellPart vendor;
} VendorShellRec, *VendorShellWidget;
_XFUNCPROTOEND
#endif /* _XtVendorPrivate_h */

View File

@ -0,0 +1,717 @@
/* Definitions for the X window system likely to be used by applications */
#ifndef X_H
#define X_H
/***********************************************************
Copyright 1987, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
#define X_PROTOCOL 11 /* current protocol version */
#define X_PROTOCOL_REVISION 0 /* current minor version */
/* Resources */
/*
* _XSERVER64 must ONLY be defined when compiling X server sources on
* systems where unsigned long is not 32 bits, must NOT be used in
* client or library code.
*/
#ifndef _XSERVER64
# ifndef _XTYPEDEF_XID
# define _XTYPEDEF_XID
typedef unsigned long XID;
# endif
# ifndef _XTYPEDEF_MASK
# define _XTYPEDEF_MASK
typedef unsigned long Mask;
# endif
# ifndef _XTYPEDEF_ATOM
# define _XTYPEDEF_ATOM
typedef unsigned long Atom; /* Also in Xdefs.h */
# endif
typedef unsigned long VisualID;
typedef unsigned long Time;
#else
# include <X11/Xmd.h>
# ifndef _XTYPEDEF_XID
# define _XTYPEDEF_XID
typedef CARD32 XID;
# endif
# ifndef _XTYPEDEF_MASK
# define _XTYPEDEF_MASK
typedef CARD32 Mask;
# endif
# ifndef _XTYPEDEF_ATOM
# define _XTYPEDEF_ATOM
typedef CARD32 Atom;
# endif
typedef CARD32 VisualID;
typedef CARD32 Time;
#endif
typedef XID Window;
typedef XID Drawable;
#ifndef _XTYPEDEF_FONT
# define _XTYPEDEF_FONT
typedef XID Font;
#endif
typedef XID Pixmap;
typedef XID Cursor;
typedef XID Colormap;
typedef XID GContext;
typedef XID KeySym;
typedef unsigned char KeyCode;
/*****************************************************************
* RESERVED RESOURCE AND CONSTANT DEFINITIONS
*****************************************************************/
#ifndef None
#define None 0L /* universal null resource or null atom */
#endif
#define ParentRelative 1L /* background pixmap in CreateWindow
and ChangeWindowAttributes */
#define CopyFromParent 0L /* border pixmap in CreateWindow
and ChangeWindowAttributes
special VisualID and special window
class passed to CreateWindow */
#define PointerWindow 0L /* destination window in SendEvent */
#define InputFocus 1L /* destination window in SendEvent */
#define PointerRoot 1L /* focus window in SetInputFocus */
#define AnyPropertyType 0L /* special Atom, passed to GetProperty */
#define AnyKey 0L /* special Key Code, passed to GrabKey */
#define AnyButton 0L /* special Button Code, passed to GrabButton */
#define AllTemporary 0L /* special Resource ID passed to KillClient */
#define CurrentTime 0L /* special Time */
#define NoSymbol 0L /* special KeySym */
/*****************************************************************
* EVENT DEFINITIONS
*****************************************************************/
/* Input Event Masks. Used as event-mask window attribute and as arguments
to Grab requests. Not to be confused with event names. */
#define NoEventMask 0L
#define KeyPressMask (1L<<0)
#define KeyReleaseMask (1L<<1)
#define ButtonPressMask (1L<<2)
#define ButtonReleaseMask (1L<<3)
#define EnterWindowMask (1L<<4)
#define LeaveWindowMask (1L<<5)
#define PointerMotionMask (1L<<6)
#define PointerMotionHintMask (1L<<7)
#define Button1MotionMask (1L<<8)
#define Button2MotionMask (1L<<9)
#define Button3MotionMask (1L<<10)
#define Button4MotionMask (1L<<11)
#define Button5MotionMask (1L<<12)
#define ButtonMotionMask (1L<<13)
#define KeymapStateMask (1L<<14)
#define ExposureMask (1L<<15)
#define VisibilityChangeMask (1L<<16)
#define StructureNotifyMask (1L<<17)
#define ResizeRedirectMask (1L<<18)
#define SubstructureNotifyMask (1L<<19)
#define SubstructureRedirectMask (1L<<20)
#define FocusChangeMask (1L<<21)
#define PropertyChangeMask (1L<<22)
#define ColormapChangeMask (1L<<23)
#define OwnerGrabButtonMask (1L<<24)
/* Event names. Used in "type" field in XEvent structures. Not to be
confused with event masks above. They start from 2 because 0 and 1
are reserved in the protocol for errors and replies. */
#define KeyPress 2
#define KeyRelease 3
#define ButtonPress 4
#define ButtonRelease 5
#define MotionNotify 6
#define EnterNotify 7
#define LeaveNotify 8
#define FocusIn 9
#define FocusOut 10
#define KeymapNotify 11
#define Expose 12
#define GraphicsExpose 13
#define NoExpose 14
#define VisibilityNotify 15
#define CreateNotify 16
#define DestroyNotify 17
#define UnmapNotify 18
#define MapNotify 19
#define MapRequest 20
#define ReparentNotify 21
#define ConfigureNotify 22
#define ConfigureRequest 23
#define GravityNotify 24
#define ResizeRequest 25
#define CirculateNotify 26
#define CirculateRequest 27
#define PropertyNotify 28
#define SelectionClear 29
#define SelectionRequest 30
#define SelectionNotify 31
#define ColormapNotify 32
#define ClientMessage 33
#define MappingNotify 34
#define GenericEvent 35
#define LASTEvent 36 /* must be bigger than any event # */
/* Key masks. Used as modifiers to GrabButton and GrabKey, results of QueryPointer,
state in various key-, mouse-, and button-related events. */
#define ShiftMask (1<<0)
#define LockMask (1<<1)
#define ControlMask (1<<2)
#define Mod1Mask (1<<3)
#define Mod2Mask (1<<4)
#define Mod3Mask (1<<5)
#define Mod4Mask (1<<6)
#define Mod5Mask (1<<7)
/* modifier names. Used to build a SetModifierMapping request or
to read a GetModifierMapping request. These correspond to the
masks defined above. */
#define ShiftMapIndex 0
#define LockMapIndex 1
#define ControlMapIndex 2
#define Mod1MapIndex 3
#define Mod2MapIndex 4
#define Mod3MapIndex 5
#define Mod4MapIndex 6
#define Mod5MapIndex 7
/* button masks. Used in same manner as Key masks above. Not to be confused
with button names below. */
#define Button1Mask (1<<8)
#define Button2Mask (1<<9)
#define Button3Mask (1<<10)
#define Button4Mask (1<<11)
#define Button5Mask (1<<12)
#define AnyModifier (1<<15) /* used in GrabButton, GrabKey */
/* button names. Used as arguments to GrabButton and as detail in ButtonPress
and ButtonRelease events. Not to be confused with button masks above.
Note that 0 is already defined above as "AnyButton". */
#define Button1 1
#define Button2 2
#define Button3 3
#define Button4 4
#define Button5 5
/* Notify modes */
#define NotifyNormal 0
#define NotifyGrab 1
#define NotifyUngrab 2
#define NotifyWhileGrabbed 3
#define NotifyHint 1 /* for MotionNotify events */
/* Notify detail */
#define NotifyAncestor 0
#define NotifyVirtual 1
#define NotifyInferior 2
#define NotifyNonlinear 3
#define NotifyNonlinearVirtual 4
#define NotifyPointer 5
#define NotifyPointerRoot 6
#define NotifyDetailNone 7
/* Visibility notify */
#define VisibilityUnobscured 0
#define VisibilityPartiallyObscured 1
#define VisibilityFullyObscured 2
/* Circulation request */
#define PlaceOnTop 0
#define PlaceOnBottom 1
/* protocol families */
#define FamilyInternet 0 /* IPv4 */
#define FamilyDECnet 1
#define FamilyChaos 2
#define FamilyInternet6 6 /* IPv6 */
/* authentication families not tied to a specific protocol */
#define FamilyServerInterpreted 5
/* Property notification */
#define PropertyNewValue 0
#define PropertyDelete 1
/* Color Map notification */
#define ColormapUninstalled 0
#define ColormapInstalled 1
/* GrabPointer, GrabButton, GrabKeyboard, GrabKey Modes */
#define GrabModeSync 0
#define GrabModeAsync 1
/* GrabPointer, GrabKeyboard reply status */
#define GrabSuccess 0
#define AlreadyGrabbed 1
#define GrabInvalidTime 2
#define GrabNotViewable 3
#define GrabFrozen 4
/* AllowEvents modes */
#define AsyncPointer 0
#define SyncPointer 1
#define ReplayPointer 2
#define AsyncKeyboard 3
#define SyncKeyboard 4
#define ReplayKeyboard 5
#define AsyncBoth 6
#define SyncBoth 7
/* Used in SetInputFocus, GetInputFocus */
#define RevertToNone (int)None
#define RevertToPointerRoot (int)PointerRoot
#define RevertToParent 2
/*****************************************************************
* ERROR CODES
*****************************************************************/
#define Success 0 /* everything's okay */
#define BadRequest 1 /* bad request code */
#define BadValue 2 /* int parameter out of range */
#define BadWindow 3 /* parameter not a Window */
#define BadPixmap 4 /* parameter not a Pixmap */
#define BadAtom 5 /* parameter not an Atom */
#define BadCursor 6 /* parameter not a Cursor */
#define BadFont 7 /* parameter not a Font */
#define BadMatch 8 /* parameter mismatch */
#define BadDrawable 9 /* parameter not a Pixmap or Window */
#define BadAccess 10 /* depending on context:
- key/button already grabbed
- attempt to free an illegal
cmap entry
- attempt to store into a read-only
color map entry.
- attempt to modify the access control
list from other than the local host.
*/
#define BadAlloc 11 /* insufficient resources */
#define BadColor 12 /* no such colormap */
#define BadGC 13 /* parameter not a GC */
#define BadIDChoice 14 /* choice not in range or already used */
#define BadName 15 /* font or color name doesn't exist */
#define BadLength 16 /* Request length incorrect */
#define BadImplementation 17 /* server is defective */
#define FirstExtensionError 128
#define LastExtensionError 255
/*****************************************************************
* WINDOW DEFINITIONS
*****************************************************************/
/* Window classes used by CreateWindow */
/* Note that CopyFromParent is already defined as 0 above */
#define InputOutput 1
#define InputOnly 2
/* Window attributes for CreateWindow and ChangeWindowAttributes */
#define CWBackPixmap (1L<<0)
#define CWBackPixel (1L<<1)
#define CWBorderPixmap (1L<<2)
#define CWBorderPixel (1L<<3)
#define CWBitGravity (1L<<4)
#define CWWinGravity (1L<<5)
#define CWBackingStore (1L<<6)
#define CWBackingPlanes (1L<<7)
#define CWBackingPixel (1L<<8)
#define CWOverrideRedirect (1L<<9)
#define CWSaveUnder (1L<<10)
#define CWEventMask (1L<<11)
#define CWDontPropagate (1L<<12)
#define CWColormap (1L<<13)
#define CWCursor (1L<<14)
/* ConfigureWindow structure */
#define CWX (1<<0)
#define CWY (1<<1)
#define CWWidth (1<<2)
#define CWHeight (1<<3)
#define CWBorderWidth (1<<4)
#define CWSibling (1<<5)
#define CWStackMode (1<<6)
/* Bit Gravity */
#define ForgetGravity 0
#define NorthWestGravity 1
#define NorthGravity 2
#define NorthEastGravity 3
#define WestGravity 4
#define CenterGravity 5
#define EastGravity 6
#define SouthWestGravity 7
#define SouthGravity 8
#define SouthEastGravity 9
#define StaticGravity 10
/* Window gravity + bit gravity above */
#define UnmapGravity 0
/* Used in CreateWindow for backing-store hint */
#define NotUseful 0
#define WhenMapped 1
#define Always 2
/* Used in GetWindowAttributes reply */
#define IsUnmapped 0
#define IsUnviewable 1
#define IsViewable 2
/* Used in ChangeSaveSet */
#define SetModeInsert 0
#define SetModeDelete 1
/* Used in ChangeCloseDownMode */
#define DestroyAll 0
#define RetainPermanent 1
#define RetainTemporary 2
/* Window stacking method (in configureWindow) */
#define Above 0
#define Below 1
#define TopIf 2
#define BottomIf 3
#define Opposite 4
/* Circulation direction */
#define RaiseLowest 0
#define LowerHighest 1
/* Property modes */
#define PropModeReplace 0
#define PropModePrepend 1
#define PropModeAppend 2
/*****************************************************************
* GRAPHICS DEFINITIONS
*****************************************************************/
/* graphics functions, as in GC.alu */
#define GXclear 0x0 /* 0 */
#define GXand 0x1 /* src AND dst */
#define GXandReverse 0x2 /* src AND NOT dst */
#define GXcopy 0x3 /* src */
#define GXandInverted 0x4 /* NOT src AND dst */
#define GXnoop 0x5 /* dst */
#define GXxor 0x6 /* src XOR dst */
#define GXor 0x7 /* src OR dst */
#define GXnor 0x8 /* NOT src AND NOT dst */
#define GXequiv 0x9 /* NOT src XOR dst */
#define GXinvert 0xa /* NOT dst */
#define GXorReverse 0xb /* src OR NOT dst */
#define GXcopyInverted 0xc /* NOT src */
#define GXorInverted 0xd /* NOT src OR dst */
#define GXnand 0xe /* NOT src OR NOT dst */
#define GXset 0xf /* 1 */
/* LineStyle */
#define LineSolid 0
#define LineOnOffDash 1
#define LineDoubleDash 2
/* capStyle */
#define CapNotLast 0
#define CapButt 1
#define CapRound 2
#define CapProjecting 3
/* joinStyle */
#define JoinMiter 0
#define JoinRound 1
#define JoinBevel 2
/* fillStyle */
#define FillSolid 0
#define FillTiled 1
#define FillStippled 2
#define FillOpaqueStippled 3
/* fillRule */
#define EvenOddRule 0
#define WindingRule 1
/* subwindow mode */
#define ClipByChildren 0
#define IncludeInferiors 1
/* SetClipRectangles ordering */
#define Unsorted 0
#define YSorted 1
#define YXSorted 2
#define YXBanded 3
/* CoordinateMode for drawing routines */
#define CoordModeOrigin 0 /* relative to the origin */
#define CoordModePrevious 1 /* relative to previous point */
/* Polygon shapes */
#define Complex 0 /* paths may intersect */
#define Nonconvex 1 /* no paths intersect, but not convex */
#define Convex 2 /* wholly convex */
/* Arc modes for PolyFillArc */
#define ArcChord 0 /* join endpoints of arc */
#define ArcPieSlice 1 /* join endpoints to center of arc */
/* GC components: masks used in CreateGC, CopyGC, ChangeGC, OR'ed into
GC.stateChanges */
#define GCFunction (1L<<0)
#define GCPlaneMask (1L<<1)
#define GCForeground (1L<<2)
#define GCBackground (1L<<3)
#define GCLineWidth (1L<<4)
#define GCLineStyle (1L<<5)
#define GCCapStyle (1L<<6)
#define GCJoinStyle (1L<<7)
#define GCFillStyle (1L<<8)
#define GCFillRule (1L<<9)
#define GCTile (1L<<10)
#define GCStipple (1L<<11)
#define GCTileStipXOrigin (1L<<12)
#define GCTileStipYOrigin (1L<<13)
#define GCFont (1L<<14)
#define GCSubwindowMode (1L<<15)
#define GCGraphicsExposures (1L<<16)
#define GCClipXOrigin (1L<<17)
#define GCClipYOrigin (1L<<18)
#define GCClipMask (1L<<19)
#define GCDashOffset (1L<<20)
#define GCDashList (1L<<21)
#define GCArcMode (1L<<22)
#define GCLastBit 22
/*****************************************************************
* FONTS
*****************************************************************/
/* used in QueryFont -- draw direction */
#define FontLeftToRight 0
#define FontRightToLeft 1
#define FontChange 255
/*****************************************************************
* IMAGING
*****************************************************************/
/* ImageFormat -- PutImage, GetImage */
#define XYBitmap 0 /* depth 1, XYFormat */
#define XYPixmap 1 /* depth == drawable depth */
#define ZPixmap 2 /* depth == drawable depth */
/*****************************************************************
* COLOR MAP STUFF
*****************************************************************/
/* For CreateColormap */
#define AllocNone 0 /* create map with no entries */
#define AllocAll 1 /* allocate entire map writeable */
/* Flags used in StoreNamedColor, StoreColors */
#define DoRed (1<<0)
#define DoGreen (1<<1)
#define DoBlue (1<<2)
/*****************************************************************
* CURSOR STUFF
*****************************************************************/
/* QueryBestSize Class */
#define CursorShape 0 /* largest size that can be displayed */
#define TileShape 1 /* size tiled fastest */
#define StippleShape 2 /* size stippled fastest */
/*****************************************************************
* KEYBOARD/POINTER STUFF
*****************************************************************/
#define AutoRepeatModeOff 0
#define AutoRepeatModeOn 1
#define AutoRepeatModeDefault 2
#define LedModeOff 0
#define LedModeOn 1
/* masks for ChangeKeyboardControl */
#define KBKeyClickPercent (1L<<0)
#define KBBellPercent (1L<<1)
#define KBBellPitch (1L<<2)
#define KBBellDuration (1L<<3)
#define KBLed (1L<<4)
#define KBLedMode (1L<<5)
#define KBKey (1L<<6)
#define KBAutoRepeatMode (1L<<7)
#define MappingSuccess 0
#define MappingBusy 1
#define MappingFailed 2
#define MappingModifier 0
#define MappingKeyboard 1
#define MappingPointer 2
/*****************************************************************
* SCREEN SAVER STUFF
*****************************************************************/
#define DontPreferBlanking 0
#define PreferBlanking 1
#define DefaultBlanking 2
#define DisableScreenSaver 0
#define DisableScreenInterval 0
#define DontAllowExposures 0
#define AllowExposures 1
#define DefaultExposures 2
/* for ForceScreenSaver */
#define ScreenSaverReset 0
#define ScreenSaverActive 1
/*****************************************************************
* HOSTS AND CONNECTIONS
*****************************************************************/
/* for ChangeHosts */
#define HostInsert 0
#define HostDelete 1
/* for ChangeAccessControl */
#define EnableAccess 1
#define DisableAccess 0
/* Display classes used in opening the connection
* Note that the statically allocated ones are even numbered and the
* dynamically changeable ones are odd numbered */
#define StaticGray 0
#define GrayScale 1
#define StaticColor 2
#define PseudoColor 3
#define TrueColor 4
#define DirectColor 5
/* Byte order used in imageByteOrder and bitmapBitOrder */
#define LSBFirst 0
#define MSBFirst 1
#endif /* X_H */

View File

@ -0,0 +1,220 @@
/*
* XFree86 vendor specific keysyms.
*
* The XFree86 keysym range is 0x10080001 - 0x1008FFFF.
*
* X.Org will not be adding to the XF86 set of keysyms, though they have
* been adopted and are considered a "standard" part of X keysym definitions.
* XFree86 never properly commented these keysyms, so we have done our
* best to explain the semantic meaning of these keys.
*
* XFree86 has removed their mail archives of the period, that might have
* shed more light on some of these definitions. Until/unless we resurrect
* these archives, these are from memory and usage.
*/
/*
* ModeLock
*
* This one is old, and not really used any more since XKB offers this
* functionality.
*/
#define XF86XK_ModeLock 0x1008FF01 /* Mode Switch Lock */
/* Backlight controls. */
#define XF86XK_MonBrightnessUp 0x1008FF02 /* Monitor/panel brightness */
#define XF86XK_MonBrightnessDown 0x1008FF03 /* Monitor/panel brightness */
#define XF86XK_KbdLightOnOff 0x1008FF04 /* Keyboards may be lit */
#define XF86XK_KbdBrightnessUp 0x1008FF05 /* Keyboards may be lit */
#define XF86XK_KbdBrightnessDown 0x1008FF06 /* Keyboards may be lit */
/*
* Keys found on some "Internet" keyboards.
*/
#define XF86XK_Standby 0x1008FF10 /* System into standby mode */
#define XF86XK_AudioLowerVolume 0x1008FF11 /* Volume control down */
#define XF86XK_AudioMute 0x1008FF12 /* Mute sound from the system */
#define XF86XK_AudioRaiseVolume 0x1008FF13 /* Volume control up */
#define XF86XK_AudioPlay 0x1008FF14 /* Start playing of audio > */
#define XF86XK_AudioStop 0x1008FF15 /* Stop playing audio */
#define XF86XK_AudioPrev 0x1008FF16 /* Previous track */
#define XF86XK_AudioNext 0x1008FF17 /* Next track */
#define XF86XK_HomePage 0x1008FF18 /* Display user's home page */
#define XF86XK_Mail 0x1008FF19 /* Invoke user's mail program */
#define XF86XK_Start 0x1008FF1A /* Start application */
#define XF86XK_Search 0x1008FF1B /* Search */
#define XF86XK_AudioRecord 0x1008FF1C /* Record audio application */
/* These are sometimes found on PDA's (e.g. Palm, PocketPC or elsewhere) */
#define XF86XK_Calculator 0x1008FF1D /* Invoke calculator program */
#define XF86XK_Memo 0x1008FF1E /* Invoke Memo taking program */
#define XF86XK_ToDoList 0x1008FF1F /* Invoke To Do List program */
#define XF86XK_Calendar 0x1008FF20 /* Invoke Calendar program */
#define XF86XK_PowerDown 0x1008FF21 /* Deep sleep the system */
#define XF86XK_ContrastAdjust 0x1008FF22 /* Adjust screen contrast */
#define XF86XK_RockerUp 0x1008FF23 /* Rocker switches exist up */
#define XF86XK_RockerDown 0x1008FF24 /* and down */
#define XF86XK_RockerEnter 0x1008FF25 /* and let you press them */
/* Some more "Internet" keyboard symbols */
#define XF86XK_Back 0x1008FF26 /* Like back on a browser */
#define XF86XK_Forward 0x1008FF27 /* Like forward on a browser */
#define XF86XK_Stop 0x1008FF28 /* Stop current operation */
#define XF86XK_Refresh 0x1008FF29 /* Refresh the page */
#define XF86XK_PowerOff 0x1008FF2A /* Power off system entirely */
#define XF86XK_WakeUp 0x1008FF2B /* Wake up system from sleep */
#define XF86XK_Eject 0x1008FF2C /* Eject device (e.g. DVD) */
#define XF86XK_ScreenSaver 0x1008FF2D /* Invoke screensaver */
#define XF86XK_WWW 0x1008FF2E /* Invoke web browser */
#define XF86XK_Sleep 0x1008FF2F /* Put system to sleep */
#define XF86XK_Favorites 0x1008FF30 /* Show favorite locations */
#define XF86XK_AudioPause 0x1008FF31 /* Pause audio playing */
#define XF86XK_AudioMedia 0x1008FF32 /* Launch media collection app */
#define XF86XK_MyComputer 0x1008FF33 /* Display "My Computer" window */
#define XF86XK_VendorHome 0x1008FF34 /* Display vendor home web site */
#define XF86XK_LightBulb 0x1008FF35 /* Light bulb keys exist */
#define XF86XK_Shop 0x1008FF36 /* Display shopping web site */
#define XF86XK_History 0x1008FF37 /* Show history of web surfing */
#define XF86XK_OpenURL 0x1008FF38 /* Open selected URL */
#define XF86XK_AddFavorite 0x1008FF39 /* Add URL to favorites list */
#define XF86XK_HotLinks 0x1008FF3A /* Show "hot" links */
#define XF86XK_BrightnessAdjust 0x1008FF3B /* Invoke brightness adj. UI */
#define XF86XK_Finance 0x1008FF3C /* Display financial site */
#define XF86XK_Community 0x1008FF3D /* Display user's community */
#define XF86XK_AudioRewind 0x1008FF3E /* "rewind" audio track */
#define XF86XK_BackForward 0x1008FF3F /* ??? */
#define XF86XK_Launch0 0x1008FF40 /* Launch Application */
#define XF86XK_Launch1 0x1008FF41 /* Launch Application */
#define XF86XK_Launch2 0x1008FF42 /* Launch Application */
#define XF86XK_Launch3 0x1008FF43 /* Launch Application */
#define XF86XK_Launch4 0x1008FF44 /* Launch Application */
#define XF86XK_Launch5 0x1008FF45 /* Launch Application */
#define XF86XK_Launch6 0x1008FF46 /* Launch Application */
#define XF86XK_Launch7 0x1008FF47 /* Launch Application */
#define XF86XK_Launch8 0x1008FF48 /* Launch Application */
#define XF86XK_Launch9 0x1008FF49 /* Launch Application */
#define XF86XK_LaunchA 0x1008FF4A /* Launch Application */
#define XF86XK_LaunchB 0x1008FF4B /* Launch Application */
#define XF86XK_LaunchC 0x1008FF4C /* Launch Application */
#define XF86XK_LaunchD 0x1008FF4D /* Launch Application */
#define XF86XK_LaunchE 0x1008FF4E /* Launch Application */
#define XF86XK_LaunchF 0x1008FF4F /* Launch Application */
#define XF86XK_ApplicationLeft 0x1008FF50 /* switch to application, left */
#define XF86XK_ApplicationRight 0x1008FF51 /* switch to application, right*/
#define XF86XK_Book 0x1008FF52 /* Launch bookreader */
#define XF86XK_CD 0x1008FF53 /* Launch CD/DVD player */
#define XF86XK_Calculater 0x1008FF54 /* Launch Calculater */
#define XF86XK_Clear 0x1008FF55 /* Clear window, screen */
#define XF86XK_Close 0x1008FF56 /* Close window */
#define XF86XK_Copy 0x1008FF57 /* Copy selection */
#define XF86XK_Cut 0x1008FF58 /* Cut selection */
#define XF86XK_Display 0x1008FF59 /* Output switch key */
#define XF86XK_DOS 0x1008FF5A /* Launch DOS (emulation) */
#define XF86XK_Documents 0x1008FF5B /* Open documents window */
#define XF86XK_Excel 0x1008FF5C /* Launch spread sheet */
#define XF86XK_Explorer 0x1008FF5D /* Launch file explorer */
#define XF86XK_Game 0x1008FF5E /* Launch game */
#define XF86XK_Go 0x1008FF5F /* Go to URL */
#define XF86XK_iTouch 0x1008FF60 /* Logitch iTouch- don't use */
#define XF86XK_LogOff 0x1008FF61 /* Log off system */
#define XF86XK_Market 0x1008FF62 /* ?? */
#define XF86XK_Meeting 0x1008FF63 /* enter meeting in calendar */
#define XF86XK_MenuKB 0x1008FF65 /* distingush keyboard from PB */
#define XF86XK_MenuPB 0x1008FF66 /* distinuish PB from keyboard */
#define XF86XK_MySites 0x1008FF67 /* Favourites */
#define XF86XK_New 0x1008FF68 /* New (folder, document... */
#define XF86XK_News 0x1008FF69 /* News */
#define XF86XK_OfficeHome 0x1008FF6A /* Office home (old Staroffice)*/
#define XF86XK_Open 0x1008FF6B /* Open */
#define XF86XK_Option 0x1008FF6C /* ?? */
#define XF86XK_Paste 0x1008FF6D /* Paste */
#define XF86XK_Phone 0x1008FF6E /* Launch phone; dial number */
#define XF86XK_Q 0x1008FF70 /* Compaq's Q - don't use */
#define XF86XK_Reply 0x1008FF72 /* Reply e.g., mail */
#define XF86XK_Reload 0x1008FF73 /* Reload web page, file, etc. */
#define XF86XK_RotateWindows 0x1008FF74 /* Rotate windows e.g. xrandr */
#define XF86XK_RotationPB 0x1008FF75 /* don't use */
#define XF86XK_RotationKB 0x1008FF76 /* don't use */
#define XF86XK_Save 0x1008FF77 /* Save (file, document, state */
#define XF86XK_ScrollUp 0x1008FF78 /* Scroll window/contents up */
#define XF86XK_ScrollDown 0x1008FF79 /* Scrool window/contentd down */
#define XF86XK_ScrollClick 0x1008FF7A /* Use XKB mousekeys instead */
#define XF86XK_Send 0x1008FF7B /* Send mail, file, object */
#define XF86XK_Spell 0x1008FF7C /* Spell checker */
#define XF86XK_SplitScreen 0x1008FF7D /* Split window or screen */
#define XF86XK_Support 0x1008FF7E /* Get support (??) */
#define XF86XK_TaskPane 0x1008FF7F /* Show tasks */
#define XF86XK_Terminal 0x1008FF80 /* Launch terminal emulator */
#define XF86XK_Tools 0x1008FF81 /* toolbox of desktop/app. */
#define XF86XK_Travel 0x1008FF82 /* ?? */
#define XF86XK_UserPB 0x1008FF84 /* ?? */
#define XF86XK_User1KB 0x1008FF85 /* ?? */
#define XF86XK_User2KB 0x1008FF86 /* ?? */
#define XF86XK_Video 0x1008FF87 /* Launch video player */
#define XF86XK_WheelButton 0x1008FF88 /* button from a mouse wheel */
#define XF86XK_Word 0x1008FF89 /* Launch word processor */
#define XF86XK_Xfer 0x1008FF8A
#define XF86XK_ZoomIn 0x1008FF8B /* zoom in view, map, etc. */
#define XF86XK_ZoomOut 0x1008FF8C /* zoom out view, map, etc. */
#define XF86XK_Away 0x1008FF8D /* mark yourself as away */
#define XF86XK_Messenger 0x1008FF8E /* as in instant messaging */
#define XF86XK_WebCam 0x1008FF8F /* Launch web camera app. */
#define XF86XK_MailForward 0x1008FF90 /* Forward in mail */
#define XF86XK_Pictures 0x1008FF91 /* Show pictures */
#define XF86XK_Music 0x1008FF92 /* Launch music application */
#define XF86XK_Battery 0x1008FF93 /* Display battery information */
#define XF86XK_Bluetooth 0x1008FF94 /* Enable/disable Bluetooth */
#define XF86XK_WLAN 0x1008FF95 /* Enable/disable WLAN */
#define XF86XK_UWB 0x1008FF96 /* Enable/disable UWB */
#define XF86XK_AudioForward 0x1008FF97 /* fast-forward audio track */
#define XF86XK_AudioRepeat 0x1008FF98 /* toggle repeat mode */
#define XF86XK_AudioRandomPlay 0x1008FF99 /* toggle shuffle mode */
#define XF86XK_Subtitle 0x1008FF9A /* cycle through subtitle */
#define XF86XK_AudioCycleTrack 0x1008FF9B /* cycle through audio tracks */
#define XF86XK_CycleAngle 0x1008FF9C /* cycle through angles */
#define XF86XK_FrameBack 0x1008FF9D /* video: go one frame back */
#define XF86XK_FrameForward 0x1008FF9E /* video: go one frame forward */
#define XF86XK_Time 0x1008FF9F /* display, or shows an entry for time seeking */
#define XF86XK_Select 0x1008FFA0 /* Select button on joypads and remotes */
#define XF86XK_View 0x1008FFA1 /* Show a view options/properties */
#define XF86XK_TopMenu 0x1008FFA2 /* Go to a top-level menu in a video */
#define XF86XK_Red 0x1008FFA3 /* Red button */
#define XF86XK_Green 0x1008FFA4 /* Green button */
#define XF86XK_Yellow 0x1008FFA5 /* Yellow button */
#define XF86XK_Blue 0x1008FFA6 /* Blue button */
#define XF86XK_Suspend 0x1008FFA7 /* Sleep to RAM */
#define XF86XK_Hibernate 0x1008FFA8 /* Sleep to disk */
#define XF86XK_TouchpadToggle 0x1008FFA9 /* Toggle between touchpad/trackstick */
#define XF86XK_TouchpadOn 0x1008FFB0 /* The touchpad got switched on */
#define XF86XK_TouchpadOff 0x1008FFB1 /* The touchpad got switched off */
#define XF86XK_AudioMicMute 0x1008FFB2 /* Mute the Mic from the system */
/* Keys for special action keys (hot keys) */
/* Virtual terminals on some operating systems */
#define XF86XK_Switch_VT_1 0x1008FE01
#define XF86XK_Switch_VT_2 0x1008FE02
#define XF86XK_Switch_VT_3 0x1008FE03
#define XF86XK_Switch_VT_4 0x1008FE04
#define XF86XK_Switch_VT_5 0x1008FE05
#define XF86XK_Switch_VT_6 0x1008FE06
#define XF86XK_Switch_VT_7 0x1008FE07
#define XF86XK_Switch_VT_8 0x1008FE08
#define XF86XK_Switch_VT_9 0x1008FE09
#define XF86XK_Switch_VT_10 0x1008FE0A
#define XF86XK_Switch_VT_11 0x1008FE0B
#define XF86XK_Switch_VT_12 0x1008FE0C
#define XF86XK_Ungrab 0x1008FE20 /* force ungrab */
#define XF86XK_ClearGrab 0x1008FE21 /* kill application with grab */
#define XF86XK_Next_VMode 0x1008FE22 /* next video mode available */
#define XF86XK_Prev_VMode 0x1008FE23 /* prev. video mode available */
#define XF86XK_LogWindowTree 0x1008FE24 /* print window tree to log */
#define XF86XK_LogGrabInfo 0x1008FE25 /* print all active grabs to log */

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,113 @@
/*
Copyright 1985, 1986, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
/*
* XWDFile.h MIT Project Athena, X Window system window raster
* image dumper, dump file format header file.
*
* Author: Tony Della Fera, DEC
* 27-Jun-85
*
* Modifier: William F. Wyatt, SAO
* 18-Nov-86 - version 6 for saving/restoring color maps
*/
#ifndef XWDFILE_H
#define XWDFILE_H
#include <X11/Xmd.h>
#define XWD_FILE_VERSION 7
#define sz_XWDheader 100
#define sz_XWDColor 12
typedef CARD32 xwdval; /* for old broken programs */
/* Values in the file are most significant byte first. */
typedef struct _xwd_file_header {
/* header_size = SIZEOF(XWDheader) + length of null-terminated
* window name. */
CARD32 header_size B32;
CARD32 file_version B32; /* = XWD_FILE_VERSION above */
CARD32 pixmap_format B32; /* ZPixmap or XYPixmap */
CARD32 pixmap_depth B32; /* Pixmap depth */
CARD32 pixmap_width B32; /* Pixmap width */
CARD32 pixmap_height B32; /* Pixmap height */
CARD32 xoffset B32; /* Bitmap x offset, normally 0 */
CARD32 byte_order B32; /* of image data: MSBFirst, LSBFirst */
/* bitmap_unit applies to bitmaps (depth 1 format XY) only.
* It is the number of bits that each scanline is padded to. */
CARD32 bitmap_unit B32;
CARD32 bitmap_bit_order B32; /* bitmaps only: MSBFirst, LSBFirst */
/* bitmap_pad applies to pixmaps (non-bitmaps) only.
* It is the number of bits that each scanline is padded to. */
CARD32 bitmap_pad B32;
CARD32 bits_per_pixel B32; /* Bits per pixel */
/* bytes_per_line is pixmap_width padded to bitmap_unit (bitmaps)
* or bitmap_pad (pixmaps). It is the delta (in bytes) to get
* to the same x position on an adjacent row. */
CARD32 bytes_per_line B32;
CARD32 visual_class B32; /* Class of colormap */
CARD32 red_mask B32; /* Z red mask */
CARD32 green_mask B32; /* Z green mask */
CARD32 blue_mask B32; /* Z blue mask */
CARD32 bits_per_rgb B32; /* Log2 of distinct color values */
CARD32 colormap_entries B32; /* Number of entries in colormap; not used? */
CARD32 ncolors B32; /* Number of XWDColor structures */
CARD32 window_width B32; /* Window width */
CARD32 window_height B32; /* Window height */
CARD32 window_x B32; /* Window upper left X coordinate */
CARD32 window_y B32; /* Window upper left Y coordinate */
CARD32 window_bdrwidth B32; /* Window border width */
} XWDFileHeader;
/* Null-terminated window name follows the above structure. */
/* Next comes XWDColor structures, at offset XWDFileHeader.header_size in
* the file. XWDFileHeader.ncolors tells how many XWDColor structures
* there are.
*/
typedef struct {
CARD32 pixel B32;
CARD16 red B16;
CARD16 green B16;
CARD16 blue B16;
CARD8 flags;
CARD8 pad;
} XWDColor;
/* Last comes the image data in the format described by XWDFileHeader. */
#endif /* XWDFILE_H */

View File

@ -0,0 +1,121 @@
/*
Copyright 1995, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall
not be used in advertising or otherwise to promote the sale, use or
other dealings in this Software without prior written authorization
from The Open Group.
*/
/*
* The purpose of this header is to define the macros ALLOCATE_LOCAL and
* DEALLOCATE_LOCAL appropriately for the platform being compiled on.
* These macros are used to make fast, function-local memory allocations.
* Their characteristics are as follows:
*
* void *ALLOCATE_LOCAL(int size)
* Returns a pointer to size bytes of memory, or NULL if the allocation
* failed. The memory must be freed with DEALLOCATE_LOCAL before the
* function that made the allocation returns. You should not ask for
* large blocks of memory with this function, since on many platforms
* the memory comes from the stack, which may have limited size.
*
* void DEALLOCATE_LOCAL(void *)
* Frees the memory allocated by ALLOCATE_LOCAL. Omission of this
* step may be harmless on some platforms, but will result in
* memory leaks or worse on others.
*
* Before including this file, you should define two macros,
* ALLOCATE_LOCAL_FALLBACK and DEALLOCATE_LOCAL_FALLBACK, that have the
* same characteristics as ALLOCATE_LOCAL and DEALLOCATE_LOCAL. The
* header uses the fallbacks if it doesn't know a "better" way to define
* ALLOCATE_LOCAL and DEALLOCATE_LOCAL. Typical usage would be:
*
* #define ALLOCATE_LOCAL_FALLBACK(_size) malloc(_size)
* #define DEALLOCATE_LOCAL_FALLBACK(_ptr) free(_ptr)
* #include "Xalloca.h"
*/
#ifndef XALLOCA_H
#define XALLOCA_H 1
#ifndef INCLUDE_ALLOCA_H
/* Need to add more here to match Imake *.cf's */
# if defined(HAVE_ALLOCA_H) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
# define INCLUDE_ALLOCA_H
# endif
#endif
#ifdef INCLUDE_ALLOCA_H
# include <alloca.h>
#endif
#ifndef NO_ALLOCA
/*
* os-dependent definition of local allocation and deallocation
* If you want something other than (DE)ALLOCATE_LOCAL_FALLBACK
* for ALLOCATE/DEALLOCATE_LOCAL then you add that in here.
*/
# ifdef __GNUC__
# ifndef alloca
# define alloca __builtin_alloca
# endif /* !alloca */
# define ALLOCATE_LOCAL(size) alloca((int)(size))
# else /* ! __GNUC__ */
/*
* warning: old mips alloca (pre 2.10) is unusable, new one is built in
* Test is easy, the new one is named __builtin_alloca and comes
* from alloca.h which #defines alloca.
*/
# if defined(__sun) || defined(alloca)
/*
* Some System V boxes extract alloca.o from /lib/libPW.a; if you
* decide that you don't want to use alloca, you might want to fix it here.
*/
/* alloca might be a macro taking one arg (hi, Sun!), so give it one. */
# if !defined(__cplusplus)
# define __Xnullarg /* as nothing */
extern void *alloca(__Xnullarg);
# endif
# define ALLOCATE_LOCAL(size) alloca((int)(size))
# endif /* who does alloca */
# endif /* __GNUC__ */
#endif /* NO_ALLOCA */
#if !defined(ALLOCATE_LOCAL)
# if defined(ALLOCATE_LOCAL_FALLBACK) && defined(DEALLOCATE_LOCAL_FALLBACK)
# define ALLOCATE_LOCAL(_size) ALLOCATE_LOCAL_FALLBACK(_size)
# define DEALLOCATE_LOCAL(_ptr) DEALLOCATE_LOCAL_FALLBACK(_ptr)
# else /* no fallbacks supplied; error */
# define ALLOCATE_LOCAL(_size) ALLOCATE_LOCAL_FALLBACK undefined!
# define DEALLOCATE_LOCAL(_ptr) DEALLOCATE_LOCAL_FALLBACK undefined!
# endif /* defined(ALLOCATE_LOCAL_FALLBACK && DEALLOCATE_LOCAL_FALLBACK) */
#else
# if !defined(DEALLOCATE_LOCAL)
# define DEALLOCATE_LOCAL(_ptr) do {} while(0)
# endif
#endif /* defined(ALLOCATE_LOCAL) */
#endif /* XALLOCA_H */

View File

@ -0,0 +1,94 @@
#ifndef _XARCH_H_
# define _XARCH_H_
/*
* Copyright 1997 Metro Link Incorporated
*
* All Rights Reserved
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the names of the above listed copyright holder(s)
* not be used in advertising or publicity pertaining to distribution of
* the software without specific, written prior permission. The above listed
* copyright holder(s) make(s) no representations about the suitability of
* this software for any purpose. It is provided "as is" without express or
* implied warranty.
*
* THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM(S) ALL WARRANTIES WITH REGARD
* TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE
* LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
* DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*
* Determine the machine's byte order.
*/
/* See if it is set in the imake config first */
# ifdef X_BYTE_ORDER
# define X_BIG_ENDIAN 4321
# define X_LITTLE_ENDIAN 1234
# else
# if defined(SVR4) || defined(__SVR4)
# include <sys/types.h>
# include <sys/byteorder.h>
# elif defined(CSRG_BASED)
# if defined(__NetBSD__) || defined(__OpenBSD__)
# include <sys/types.h>
# endif
# include <machine/endian.h>
# elif defined(linux)
# if defined __STRICT_ANSI__
# undef __STRICT_ANSI__
# include <endian.h>
# define __STRICT_ANSI__
# else
# include <endian.h>
# endif
/* 'endian.h' might have been included before 'Xarch.h' */
# if !defined(LITTLE_ENDIAN) && defined(__LITTLE_ENDIAN)
# define LITTLE_ENDIAN __LITTLE_ENDIAN
# endif
# if !defined(BIG_ENDIAN) && defined(__BIG_ENDIAN)
# define BIG_ENDIAN __BIG_ENDIAN
# endif
# if !defined(PDP_ENDIAN) && defined(__PDP_ENDIAN)
# define PDP_ENDIAN __PDP_ENDIAN
# endif
# if !defined(BYTE_ORDER) && defined(__BYTE_ORDER)
# define BYTE_ORDER __BYTE_ORDER
# endif
# endif
# ifndef BYTE_ORDER
# define LITTLE_ENDIAN 1234
# define BIG_ENDIAN 4321
# if defined(__sun) && defined(__SVR4)
# include <sys/isa_defs.h>
# ifdef _LITTLE_ENDIAN
# define BYTE_ORDER LITTLE_ENDIAN
# endif
# ifdef _BIG_ENDIAN
# define BYTE_ORDER BIG_ENDIAN
# endif
# endif /* sun */
# endif /* BYTE_ORDER */
# define X_BYTE_ORDER BYTE_ORDER
# define X_BIG_ENDIAN BIG_ENDIAN
# define X_LITTLE_ENDIAN LITTLE_ENDIAN
# endif /* not in imake config */
#endif /* _XARCH_H_ */

View File

@ -0,0 +1,79 @@
#ifndef XATOM_H
#define XATOM_H 1
/* THIS IS A GENERATED FILE
*
* Do not change! Changing this file implies a protocol change!
*/
#define XA_PRIMARY ((Atom) 1)
#define XA_SECONDARY ((Atom) 2)
#define XA_ARC ((Atom) 3)
#define XA_ATOM ((Atom) 4)
#define XA_BITMAP ((Atom) 5)
#define XA_CARDINAL ((Atom) 6)
#define XA_COLORMAP ((Atom) 7)
#define XA_CURSOR ((Atom) 8)
#define XA_CUT_BUFFER0 ((Atom) 9)
#define XA_CUT_BUFFER1 ((Atom) 10)
#define XA_CUT_BUFFER2 ((Atom) 11)
#define XA_CUT_BUFFER3 ((Atom) 12)
#define XA_CUT_BUFFER4 ((Atom) 13)
#define XA_CUT_BUFFER5 ((Atom) 14)
#define XA_CUT_BUFFER6 ((Atom) 15)
#define XA_CUT_BUFFER7 ((Atom) 16)
#define XA_DRAWABLE ((Atom) 17)
#define XA_FONT ((Atom) 18)
#define XA_INTEGER ((Atom) 19)
#define XA_PIXMAP ((Atom) 20)
#define XA_POINT ((Atom) 21)
#define XA_RECTANGLE ((Atom) 22)
#define XA_RESOURCE_MANAGER ((Atom) 23)
#define XA_RGB_COLOR_MAP ((Atom) 24)
#define XA_RGB_BEST_MAP ((Atom) 25)
#define XA_RGB_BLUE_MAP ((Atom) 26)
#define XA_RGB_DEFAULT_MAP ((Atom) 27)
#define XA_RGB_GRAY_MAP ((Atom) 28)
#define XA_RGB_GREEN_MAP ((Atom) 29)
#define XA_RGB_RED_MAP ((Atom) 30)
#define XA_STRING ((Atom) 31)
#define XA_VISUALID ((Atom) 32)
#define XA_WINDOW ((Atom) 33)
#define XA_WM_COMMAND ((Atom) 34)
#define XA_WM_HINTS ((Atom) 35)
#define XA_WM_CLIENT_MACHINE ((Atom) 36)
#define XA_WM_ICON_NAME ((Atom) 37)
#define XA_WM_ICON_SIZE ((Atom) 38)
#define XA_WM_NAME ((Atom) 39)
#define XA_WM_NORMAL_HINTS ((Atom) 40)
#define XA_WM_SIZE_HINTS ((Atom) 41)
#define XA_WM_ZOOM_HINTS ((Atom) 42)
#define XA_MIN_SPACE ((Atom) 43)
#define XA_NORM_SPACE ((Atom) 44)
#define XA_MAX_SPACE ((Atom) 45)
#define XA_END_SPACE ((Atom) 46)
#define XA_SUPERSCRIPT_X ((Atom) 47)
#define XA_SUPERSCRIPT_Y ((Atom) 48)
#define XA_SUBSCRIPT_X ((Atom) 49)
#define XA_SUBSCRIPT_Y ((Atom) 50)
#define XA_UNDERLINE_POSITION ((Atom) 51)
#define XA_UNDERLINE_THICKNESS ((Atom) 52)
#define XA_STRIKEOUT_ASCENT ((Atom) 53)
#define XA_STRIKEOUT_DESCENT ((Atom) 54)
#define XA_ITALIC_ANGLE ((Atom) 55)
#define XA_X_HEIGHT ((Atom) 56)
#define XA_QUAD_WIDTH ((Atom) 57)
#define XA_WEIGHT ((Atom) 58)
#define XA_POINT_SIZE ((Atom) 59)
#define XA_RESOLUTION ((Atom) 60)
#define XA_COPYRIGHT ((Atom) 61)
#define XA_NOTICE ((Atom) 62)
#define XA_FONT_NAME ((Atom) 63)
#define XA_FAMILY_NAME ((Atom) 64)
#define XA_FULL_NAME ((Atom) 65)
#define XA_CAP_HEIGHT ((Atom) 66)
#define XA_WM_CLASS ((Atom) 67)
#define XA_WM_TRANSIENT_FOR ((Atom) 68)
#define XA_LAST_PREDEFINED ((Atom) 68)
#endif /* XATOM_H */

View File

@ -0,0 +1,149 @@
/*
Copyright 1988, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
#ifndef _Xauth_h
#define _Xauth_h
/* struct xauth is full of implicit padding to properly align the pointers
after the length fields. We can't clean that up without breaking ABI,
so tell clang not to bother complaining about it. */
#ifdef __clang__
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wpadded"
#endif
typedef struct xauth {
unsigned short family;
unsigned short address_length;
char *address;
unsigned short number_length;
char *number;
unsigned short name_length;
char *name;
unsigned short data_length;
char *data;
} Xauth;
#ifdef __clang__
#pragma clang diagnostic pop
#endif
#ifndef _XAUTH_STRUCT_ONLY
# include <X11/Xfuncproto.h>
# include <X11/Xfuncs.h>
# include <stdio.h>
# define FamilyLocal (256) /* not part of X standard (i.e. X.h) */
# define FamilyWild (65535)
# define FamilyNetname (254) /* not part of X standard */
# define FamilyKrb5Principal (253) /* Kerberos 5 principal name */
# define FamilyLocalHost (252) /* for local non-net authentication */
_XFUNCPROTOBEGIN
char *XauFileName(void);
Xauth *XauReadAuth(
FILE* /* auth_file */
);
int XauLockAuth(
_Xconst char* /* file_name */,
int /* retries */,
int /* timeout */,
long /* dead */
);
int XauUnlockAuth(
_Xconst char* /* file_name */
);
int XauWriteAuth(
FILE* /* auth_file */,
Xauth* /* auth */
);
Xauth *XauGetAuthByAddr(
#if NeedWidePrototypes
unsigned int /* family */,
unsigned int /* address_length */,
#else
unsigned short /* family */,
unsigned short /* address_length */,
#endif
_Xconst char* /* address */,
#if NeedWidePrototypes
unsigned int /* number_length */,
#else
unsigned short /* number_length */,
#endif
_Xconst char* /* number */,
#if NeedWidePrototypes
unsigned int /* name_length */,
#else
unsigned short /* name_length */,
#endif
_Xconst char* /* name */
);
Xauth *XauGetBestAuthByAddr(
#if NeedWidePrototypes
unsigned int /* family */,
unsigned int /* address_length */,
#else
unsigned short /* family */,
unsigned short /* address_length */,
#endif
_Xconst char* /* address */,
#if NeedWidePrototypes
unsigned int /* number_length */,
#else
unsigned short /* number_length */,
#endif
_Xconst char* /* number */,
int /* types_length */,
char** /* type_names */,
_Xconst int* /* type_lengths */
);
void XauDisposeAuth(
Xauth* /* auth */
);
_XFUNCPROTOEND
/* Return values from XauLockAuth */
# define LOCK_SUCCESS 0 /* lock succeeded */
# define LOCK_ERROR 1 /* lock unexpectely failed, check errno */
# define LOCK_TIMEOUT 2 /* lock failed, timeouts expired */
#endif /* _XAUTH_STRUCT_ONLY */
#endif /* _Xauth_h */

View File

@ -0,0 +1,815 @@
/*
* Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
* All Rights Reserved
*
* This file is a component of an X Window System-specific implementation
* of Xcms based on the TekColor Color Management System. Permission is
* hereby granted to use, copy, modify, sell, and otherwise distribute this
* software and its documentation for any purpose and without fee, provided
* that this copyright, permission, and disclaimer notice is reproduced in
* all copies of this software and in supporting documentation. TekColor
* is a trademark of Tektronix, Inc.
*
* Tektronix makes no representation about the suitability of this software
* for any purpose. It is provided "as is" and with all faults.
*
* TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
* INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
* PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
* SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
* RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
* CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
* CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
*
*
* DESCRIPTION
* Public include file for X Color Management System
*/
#ifndef _X11_XCMS_H_
#define _X11_XCMS_H_
#include <X11/Xlib.h>
/* The Xcms structs are full of implicit padding to properly align members.
We can't clean that up without breaking ABI, so tell clang not to bother
complaining about it. */
#ifdef __clang__
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wpadded"
#endif
/*
* XCMS Status Values
*/
#define XcmsFailure 0
#define XcmsSuccess 1
#define XcmsSuccessWithCompression 2
/*
* Color Space Format ID's
* Color Space ID's are of XcmsColorFormat type.
*
* bit 31
* 0 == Device-Independent
* 1 == Device-Dependent
*
* bit 30:
* 0 == Registered with X Consortium
* 1 == Unregistered
*/
#define XcmsUndefinedFormat (XcmsColorFormat)0x00000000
#define XcmsCIEXYZFormat (XcmsColorFormat)0x00000001
#define XcmsCIEuvYFormat (XcmsColorFormat)0x00000002
#define XcmsCIExyYFormat (XcmsColorFormat)0x00000003
#define XcmsCIELabFormat (XcmsColorFormat)0x00000004
#define XcmsCIELuvFormat (XcmsColorFormat)0x00000005
#define XcmsTekHVCFormat (XcmsColorFormat)0x00000006
#define XcmsRGBFormat (XcmsColorFormat)0x80000000
#define XcmsRGBiFormat (XcmsColorFormat)0x80000001
/*
* State of XcmsPerScrnInfo
*/
#define XcmsInitNone 0x00 /* no initialization attempted */
#define XcmsInitSuccess 0x01 /* initialization successful */
#define XcmsInitFailure 0xff /* failure, use defaults */
#define DisplayOfCCC(ccc) ((ccc)->dpy)
#define ScreenNumberOfCCC(ccc) ((ccc)->screenNumber)
#define VisualOfCCC(ccc) ((ccc)->visual)
#define ClientWhitePointOfCCC(ccc) (&(ccc)->clientWhitePt)
#define ScreenWhitePointOfCCC(ccc) (&(ccc)->pPerScrnInfo->screenWhitePt)
#define FunctionSetOfCCC(ccc) ((ccc)->pPerScrnInfo->functionSet)
typedef unsigned long XcmsColorFormat; /* Color Space Format ID */
typedef double XcmsFloat;
/*
* Device RGB
*/
typedef struct {
unsigned short red; /* scaled from 0x0000 to 0xffff */
unsigned short green; /* scaled from 0x0000 to 0xffff */
unsigned short blue; /* scaled from 0x0000 to 0xffff */
} XcmsRGB;
/*
* RGB Intensity
*/
typedef struct {
XcmsFloat red; /* 0.0 - 1.0 */
XcmsFloat green; /* 0.0 - 1.0 */
XcmsFloat blue; /* 0.0 - 1.0 */
} XcmsRGBi;
/*
* CIE XYZ
*/
typedef struct {
XcmsFloat X;
XcmsFloat Y;
XcmsFloat Z;
} XcmsCIEXYZ;
/*
* CIE u'v'Y
*/
typedef struct {
XcmsFloat u_prime; /* 0.0 - 1.0 */
XcmsFloat v_prime; /* 0.0 - 1.0 */
XcmsFloat Y; /* 0.0 - 1.0 */
} XcmsCIEuvY;
/*
* CIE xyY
*/
typedef struct {
XcmsFloat x; /* 0.0 - 1.0 */
XcmsFloat y; /* 0.0 - 1.0 */
XcmsFloat Y; /* 0.0 - 1.0 */
} XcmsCIExyY;
/*
* CIE L*a*b*
*/
typedef struct {
XcmsFloat L_star; /* 0.0 - 100.0 */
XcmsFloat a_star;
XcmsFloat b_star;
} XcmsCIELab;
/*
* CIE L*u*v*
*/
typedef struct {
XcmsFloat L_star; /* 0.0 - 100.0 */
XcmsFloat u_star;
XcmsFloat v_star;
} XcmsCIELuv;
/*
* TekHVC
*/
typedef struct {
XcmsFloat H; /* 0.0 - 360.0 */
XcmsFloat V; /* 0.0 - 100.0 */
XcmsFloat C; /* 0.0 - 100.0 */
} XcmsTekHVC;
/*
* PAD
*/
typedef struct {
XcmsFloat pad0;
XcmsFloat pad1;
XcmsFloat pad2;
XcmsFloat pad3;
} XcmsPad;
/*
* XCMS Color Structure
*/
typedef struct {
union {
XcmsRGB RGB;
XcmsRGBi RGBi;
XcmsCIEXYZ CIEXYZ;
XcmsCIEuvY CIEuvY;
XcmsCIExyY CIExyY;
XcmsCIELab CIELab;
XcmsCIELuv CIELuv;
XcmsTekHVC TekHVC;
XcmsPad Pad;
} spec; /* the color specification */
unsigned long pixel; /* pixel value (as needed) */
XcmsColorFormat format; /* the specification format */
} XcmsColor;
/*
* XCMS Per Screen related data
*/
typedef struct _XcmsPerScrnInfo {
XcmsColor screenWhitePt; /* Screen White point */
XPointer functionSet; /* pointer to Screen Color Characterization */
/* Function Set structure */
XPointer screenData; /* pointer to corresponding Screen Color*/
/* Characterization Data */
unsigned char state; /* XcmsInitNone, XcmsInitSuccess, XcmsInitFailure */
char pad[3];
} XcmsPerScrnInfo;
typedef struct _XcmsCCC *XcmsCCC;
typedef Status (*XcmsCompressionProc)( /* Gamut Compression Proc */
XcmsCCC /* ccc */,
XcmsColor* /* colors_in_out */,
unsigned int /* ncolors */,
unsigned int /* index */,
Bool* /* compression_flags_return */
);
typedef Status (*XcmsWhiteAdjustProc)( /* White Point Adjust Proc */
XcmsCCC /* ccc */,
XcmsColor* /* initial_white_point*/,
XcmsColor* /* target_white_point*/,
XcmsColorFormat /* target_format */,
XcmsColor* /* colors_in_out */,
unsigned int /* ncolors */,
Bool* /* compression_flags_return */
);
/*
* XCMS Color Conversion Context
*/
typedef struct _XcmsCCC {
Display *dpy; /* X Display */
int screenNumber; /* X screen number */
Visual *visual; /* X Visual */
XcmsColor clientWhitePt; /* Client White Point */
XcmsCompressionProc gamutCompProc; /* Gamut Compression Function */
XPointer gamutCompClientData; /* Gamut Comp Func Client Data */
XcmsWhiteAdjustProc whitePtAdjProc; /* White Point Adjustment Function */
XPointer whitePtAdjClientData; /* White Pt Adj Func Client Data */
XcmsPerScrnInfo *pPerScrnInfo; /* pointer to per screen information */
/* associated with the above display */
/* screenNumber */
} XcmsCCCRec;
typedef Status (*XcmsScreenInitProc)( /* Screen Initialization Proc */
Display* /* dpy */,
int /* screen_number */,
XcmsPerScrnInfo* /* screen_info */
);
typedef void (*XcmsScreenFreeProc)(
XPointer /* screenData */
);
/*
* Function List Pointer -- pointer to an array of function pointers.
* The end of list is indicated by a NULL pointer.
*/
/*
* XXX: The use of the XcmsConversionProc type is broken. The
* device-independent colour conversion code uses it as:
typedef Status (*XcmsConversionProc)(XcmsCCC, XcmsColor *, XcmsColor *,
unsigned int);
* while the device-dependent code uses it as:
typedef Status (*XcmsConversionProc)(XcmsCCC, XcmsColor *, unsigned int,
Bool *);
* Until this is reworked, it's probably best to leave it unprotoized.
* The code works regardless.
*/
typedef Status (*XcmsDDConversionProc)( /* using device-dependent version */
XcmsCCC /* ccc */,
XcmsColor* /* pcolors_in_out */,
unsigned int /* ncolors */,
Bool* /* pCompressed */
);
typedef Status (*XcmsDIConversionProc)( /* using device-independent version */
XcmsCCC /* ccc */,
XcmsColor* /* white_point */,
XcmsColor* /* pcolors_in_out */,
unsigned int /* ncolors */
);
typedef XcmsDIConversionProc XcmsConversionProc;
typedef XcmsConversionProc *XcmsFuncListPtr;
typedef int (*XcmsParseStringProc)( /* Color String Parsing Proc */
char* /* color_string */,
XcmsColor* /* color_return */
);
/*
* Color Space -- per Color Space related data (Device-Independent
* or Device-Dependent)
*/
typedef struct _XcmsColorSpace {
const char *prefix; /* Prefix of string format. */
XcmsColorFormat id; /* Format ID number. */
XcmsParseStringProc parseString;
/* String format parsing function */
XcmsFuncListPtr to_CIEXYZ; /* Pointer to an array of function */
/* pointers such that when the */
/* functions are executed in sequence */
/* will convert a XcmsColor structure */
/* from this color space to CIEXYZ */
/* space. */
XcmsFuncListPtr from_CIEXYZ;/* Pointer to an array of function */
/* pointers such that when the */
/* functions are executed in sequence */
/* will convert a XcmsColor structure */
/* from CIEXYZ space to this color */
/* space. */
int inverse_flag; /* If 1, indicates that for 0 <= i < n */
/* where n is the number of function */
/* pointers in the lists to_CIEXYZ */
/* and from_CIEXYZ; for each function */
/* to_CIEXYZ[i] its inverse function */
/* is from_CIEXYZ[n - i]. */
} XcmsColorSpace;
/*
* Screen Color Characterization Function Set -- per device class
* color space conversion functions.
*/
typedef struct _XcmsFunctionSet {
XcmsColorSpace **DDColorSpaces;
/* Pointer to an array of pointers to */
/* Device-DEPENDENT color spaces */
/* understood by this SCCFuncSet. */
XcmsScreenInitProc screenInitProc;
/* Screen initialization function that */
/* reads Screen Color Characterization*/
/* Data off properties on the screen's*/
/* root window. */
XcmsScreenFreeProc screenFreeProc;
/* Function that frees the SCCData */
/* structures. */
} XcmsFunctionSet;
_XFUNCPROTOBEGIN
extern Status XcmsAddColorSpace (
XcmsColorSpace* /* pColorSpace */
);
extern Status XcmsAddFunctionSet (
XcmsFunctionSet* /* functionSet */
);
extern Status XcmsAllocColor (
Display* /* dpy */,
Colormap /* colormap */,
XcmsColor* /* color_in_out */,
XcmsColorFormat /* result_format */
);
extern Status XcmsAllocNamedColor (
Display* /* dpy */,
Colormap /* colormap */,
_Xconst char* /* color_string */,
XcmsColor* /* color_scrn_return */,
XcmsColor* /* color_exact_return */,
XcmsColorFormat /* result_format */
);
extern XcmsCCC XcmsCCCOfColormap (
Display* /* dpy */,
Colormap /* colormap */
);
extern Status XcmsCIELabClipab(
XcmsCCC /* ccc */,
XcmsColor* /* colors_in_out */,
unsigned int /* ncolors */,
unsigned int /* index */,
Bool* /* compression_flags_return */
);
extern Status XcmsCIELabClipL(
XcmsCCC /* ccc */,
XcmsColor* /* colors_in_out */,
unsigned int /* ncolors */,
unsigned int /* index */,
Bool* /* compression_flags_return */
);
extern Status XcmsCIELabClipLab(
XcmsCCC /* ccc */,
XcmsColor* /* colors_in_out */,
unsigned int /* ncolors */,
unsigned int /* index */,
Bool* /* compression_flags_return */
);
extern Status XcmsCIELabQueryMaxC (
XcmsCCC /* ccc */,
XcmsFloat /* hue_angle */,
XcmsFloat /* L_star */,
XcmsColor* /* color_return */
);
extern Status XcmsCIELabQueryMaxL (
XcmsCCC /* ccc */,
XcmsFloat /* hue_angle */,
XcmsFloat /* chroma */,
XcmsColor* /* color_return */
);
extern Status XcmsCIELabQueryMaxLC (
XcmsCCC /* ccc */,
XcmsFloat /* hue_angle */,
XcmsColor* /* color_return */
);
extern Status XcmsCIELabQueryMinL (
XcmsCCC /* ccc */,
XcmsFloat /* hue_angle */,
XcmsFloat /* chroma */,
XcmsColor* /* color_return */
);
extern Status XcmsCIELabToCIEXYZ (
XcmsCCC /* ccc */,
XcmsColor* /* white_point */,
XcmsColor* /* colors */,
unsigned int /* ncolors */
);
extern Status XcmsCIELabWhiteShiftColors(
XcmsCCC /* ccc */,
XcmsColor* /* initial_white_point*/,
XcmsColor* /* target_white_point*/,
XcmsColorFormat /* target_format */,
XcmsColor* /* colors_in_out */,
unsigned int /* ncolors */,
Bool* /* compression_flags_return */
);
extern Status XcmsCIELuvClipL(
XcmsCCC /* ccc */,
XcmsColor* /* colors_in_out */,
unsigned int /* ncolors */,
unsigned int /* index */,
Bool* /* compression_flags_return */
);
extern Status XcmsCIELuvClipLuv(
XcmsCCC /* ccc */,
XcmsColor* /* colors_in_out */,
unsigned int /* ncolors */,
unsigned int /* index */,
Bool* /* compression_flags_return */
);
extern Status XcmsCIELuvClipuv(
XcmsCCC /* ccc */,
XcmsColor* /* colors_in_out */,
unsigned int /* ncolors */,
unsigned int /* index */,
Bool* /* compression_flags_return */
);
extern Status XcmsCIELuvQueryMaxC (
XcmsCCC /* ccc */,
XcmsFloat /* hue_angle */,
XcmsFloat /* L_star */,
XcmsColor* /* color_return */
);
extern Status XcmsCIELuvQueryMaxL (
XcmsCCC /* ccc */,
XcmsFloat /* hue_angle */,
XcmsFloat /* chroma */,
XcmsColor* /* color_return */
);
extern Status XcmsCIELuvQueryMaxLC (
XcmsCCC /* ccc */,
XcmsFloat /* hue_angle */,
XcmsColor* /* color_return */
);
extern Status XcmsCIELuvQueryMinL (
XcmsCCC /* ccc */,
XcmsFloat /* hue_angle */,
XcmsFloat /* chroma */,
XcmsColor* /* color_return */
);
extern Status XcmsCIELuvToCIEuvY (
XcmsCCC /* ccc */,
XcmsColor* /* white_point */,
XcmsColor* /* colors */,
unsigned int /* ncolors */
);
extern Status XcmsCIELuvWhiteShiftColors(
XcmsCCC /* ccc */,
XcmsColor* /* initial_white_point*/,
XcmsColor* /* target_white_point*/,
XcmsColorFormat /* target_format */,
XcmsColor* /* colors_in_out */,
unsigned int /* ncolors */,
Bool* /* compression_flags_return */
);
extern Status XcmsCIEXYZToCIELab (
XcmsCCC /* ccc */,
XcmsColor* /* white_point */,
XcmsColor* /* colors */,
unsigned int /* ncolors */
);
extern Status XcmsCIEXYZToCIEuvY (
XcmsCCC /* ccc */,
XcmsColor* /* white_point */,
XcmsColor* /* colors */,
unsigned int /* ncolors */
);
extern Status XcmsCIEXYZToCIExyY (
XcmsCCC /* ccc */,
XcmsColor* /* white_point */,
XcmsColor* /* colors */,
unsigned int /* ncolors */
);
extern Status XcmsCIEXYZToRGBi (
XcmsCCC /* ccc */,
XcmsColor* /* colors */,
unsigned int /* ncolors */,
Bool* /* compression_flags_return */
);
extern Status XcmsCIEuvYToCIELuv (
XcmsCCC /* ccc */,
XcmsColor* /* white_point */,
XcmsColor* /* colors */,
unsigned int /* ncolors */
);
extern Status XcmsCIEuvYToCIEXYZ (
XcmsCCC /* ccc */,
XcmsColor* /* white_point */,
XcmsColor* /* colors */,
unsigned int /* ncolors */
);
extern Status XcmsCIEuvYToTekHVC (
XcmsCCC /* ccc */,
XcmsColor* /* white_point */,
XcmsColor* /* colors */,
unsigned int /* ncolors */
);
extern Status XcmsCIExyYToCIEXYZ (
XcmsCCC /* ccc */,
XcmsColor* /* white_point */,
XcmsColor* /* colors */,
unsigned int /* ncolors */
);
extern XcmsColor *XcmsClientWhitePointOfCCC (
XcmsCCC /* ccc */
);
extern Status XcmsConvertColors (
XcmsCCC /* ccc */,
XcmsColor* /* colorArry_in_out */,
unsigned int /* nColors */,
XcmsColorFormat /* targetFormat */,
Bool* /* compArry_return */
);
extern XcmsCCC XcmsCreateCCC (
Display* /* dpy */,
int /* screenNumber */,
Visual* /* visual */,
XcmsColor* /* clientWhitePt */,
XcmsCompressionProc /* gamutCompProc */,
XPointer /* gamutCompClientData */,
XcmsWhiteAdjustProc /* whitePtAdjProc */,
XPointer /* whitePtAdjClientData */
);
extern XcmsCCC XcmsDefaultCCC (
Display* /* dpy */,
int /* screenNumber */
);
extern Display *XcmsDisplayOfCCC (
XcmsCCC /* ccc */
);
extern XcmsColorFormat XcmsFormatOfPrefix (
char* /* prefix */
);
extern void XcmsFreeCCC (
XcmsCCC /* ccc */
);
extern Status XcmsLookupColor (
Display* /* dpy */,
Colormap /* colormap */,
_Xconst char* /* color_string */,
XcmsColor* /* pColor_exact_in_out */,
XcmsColor* /* pColor_scrn_in_out */,
XcmsColorFormat /* result_format */
);
extern char *XcmsPrefixOfFormat (
XcmsColorFormat /* id */
);
extern Status XcmsQueryBlack (
XcmsCCC /* ccc */,
XcmsColorFormat /* target_format */,
XcmsColor* /* color_return */
);
extern Status XcmsQueryBlue (
XcmsCCC /* ccc */,
XcmsColorFormat /* target_format */,
XcmsColor* /* color_return */
);
extern Status XcmsQueryColor (
Display* /* dpy */,
Colormap /* colormap */,
XcmsColor* /* pColor_in_out */,
XcmsColorFormat /* result_format */
);
extern Status XcmsQueryColors (
Display* /* dpy */,
Colormap /* colormap */,
XcmsColor* /* colorArry_in_out */,
unsigned int /* nColors */,
XcmsColorFormat /* result_format */
);
extern Status XcmsQueryGreen (
XcmsCCC /* ccc */,
XcmsColorFormat /* target_format */,
XcmsColor* /* color_return */
);
extern Status XcmsQueryRed (
XcmsCCC /* ccc */,
XcmsColorFormat /* target_format */,
XcmsColor* /* color_return */
);
extern Status XcmsQueryWhite (
XcmsCCC /* ccc */,
XcmsColorFormat /* target_format */,
XcmsColor* /* color_return */
);
extern Status XcmsRGBiToCIEXYZ (
XcmsCCC /* ccc */,
XcmsColor* /* colors */,
unsigned int /* ncolors */,
Bool* /* compression_flags_return */
);
extern Status XcmsRGBiToRGB (
XcmsCCC /* ccc */,
XcmsColor* /* colors */,
unsigned int /* ncolors */,
Bool* /* compression_flags_return */
);
extern Status XcmsRGBToRGBi (
XcmsCCC /* ccc */,
XcmsColor* /* colors */,
unsigned int /* ncolors */,
Bool* /* compression_flags_return */
);
extern int XcmsScreenNumberOfCCC (
XcmsCCC /* ccc */
);
extern XcmsColor *XcmsScreenWhitePointOfCCC (
XcmsCCC /* ccc */
);
extern XcmsCCC XcmsSetCCCOfColormap(
Display* /* dpy */,
Colormap /* colormap */,
XcmsCCC /* ccc */
);
extern XcmsCompressionProc XcmsSetCompressionProc (
XcmsCCC /* ccc */,
XcmsCompressionProc /* compression_proc */,
XPointer /* client_data */
);
extern XcmsWhiteAdjustProc XcmsSetWhiteAdjustProc (
XcmsCCC /* ccc */,
XcmsWhiteAdjustProc /* white_adjust_proc */,
XPointer /* client_data */
);
extern Status XcmsSetWhitePoint (
XcmsCCC /* ccc */,
XcmsColor* /* color */
);
extern Status XcmsStoreColor (
Display* /* dpy */,
Colormap /* colormap */,
XcmsColor* /* pColor_in */
);
extern Status XcmsStoreColors (
Display* /* dpy */,
Colormap /* colormap */,
XcmsColor* /* colorArry_in */,
unsigned int /* nColors */,
Bool* /* compArry_return */
);
extern Status XcmsTekHVCClipC(
XcmsCCC /* ccc */,
XcmsColor* /* colors_in_out */,
unsigned int /* ncolors */,
unsigned int /* index */,
Bool* /* compression_flags_return */
);
extern Status XcmsTekHVCClipV(
XcmsCCC /* ccc */,
XcmsColor* /* colors_in_out */,
unsigned int /* ncolors */,
unsigned int /* index */,
Bool* /* compression_flags_return */
);
extern Status XcmsTekHVCClipVC(
XcmsCCC /* ccc */,
XcmsColor* /* colors_in_out */,
unsigned int /* ncolors */,
unsigned int /* index */,
Bool* /* compression_flags_return */
);
extern Status XcmsTekHVCQueryMaxC (
XcmsCCC /* ccc */,
XcmsFloat /* hue */,
XcmsFloat /* value */,
XcmsColor* /* color_return */
);
extern Status XcmsTekHVCQueryMaxV (
XcmsCCC /* ccc */,
XcmsFloat /* hue */,
XcmsFloat /* chroma */,
XcmsColor* /* color_return */
);
extern Status XcmsTekHVCQueryMaxVC (
XcmsCCC /* ccc */,
XcmsFloat /* hue */,
XcmsColor* /* color_return */
);
extern Status XcmsTekHVCQueryMaxVSamples (
XcmsCCC /* ccc */,
XcmsFloat /* hue */,
XcmsColor* /* colors_return */,
unsigned int /* nsamples */
);
extern Status XcmsTekHVCQueryMinV (
XcmsCCC /* ccc */,
XcmsFloat /* hue */,
XcmsFloat /* chroma */,
XcmsColor* /* color_return */
);
extern Status XcmsTekHVCToCIEuvY (
XcmsCCC /* ccc */,
XcmsColor* /* white_point */,
XcmsColor* /* colors */,
unsigned int /* ncolors */
);
extern Status XcmsTekHVCWhiteShiftColors(
XcmsCCC /* ccc */,
XcmsColor* /* initial_white_point*/,
XcmsColor* /* target_white_point*/,
XcmsColorFormat /* target_format */,
XcmsColor* /* colors_in_out */,
unsigned int /* ncolors */,
Bool* /* compression_flags_return */
);
extern Visual *XcmsVisualOfCCC (
XcmsCCC /* ccc */
);
#ifdef __clang__
#pragma clang diagnostic pop
#endif
_XFUNCPROTOEND
#endif /* _X11_XCMS_H_ */

View File

@ -0,0 +1,108 @@
/***********************************************************
Copyright (c) 1999 The XFree86 Project Inc.
All Rights Reserved.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The XFree86 Project
Inc. shall not be used in advertising or otherwise to promote the
sale, use or other dealings in this Software without prior written
authorization from The XFree86 Project Inc..
*/
/**
** Types definitions shared between server and clients
**/
#ifndef _XDEFS_H
#define _XDEFS_H
#ifdef _XSERVER64
#include <X11/Xmd.h>
#endif
#ifndef _XTYPEDEF_ATOM
# define _XTYPEDEF_ATOM
# ifndef _XSERVER64
typedef unsigned long Atom;
# else
typedef CARD32 Atom;
# endif
#endif
#ifndef Bool
# ifndef _XTYPEDEF_BOOL
# define _XTYPEDEF_BOOL
typedef int Bool;
# endif
#endif
#ifndef _XTYPEDEF_POINTER
# define _XTYPEDEF_POINTER
typedef void *pointer;
#endif
#ifndef _XTYPEDEF_CLIENTPTR
typedef struct _Client *ClientPtr;
# define _XTYPEDEF_CLIENTPTR
#endif
#ifndef _XTYPEDEF_XID
# define _XTYPEDEF_XID
# ifndef _XSERVER64
typedef unsigned long XID;
# else
typedef CARD32 XID;
# endif
#endif
#ifndef _XTYPEDEF_MASK
# define _XTYPEDEF_MASK
# ifndef _XSERVER64
typedef unsigned long Mask;
# else
typedef CARD32 Mask;
# endif
#endif
#ifndef _XTYPEDEF_FONTPTR
# define _XTYPEDEF_FONTPTR
typedef struct _Font *FontPtr; /* also in fonts/include/font.h */
#endif
#ifndef _XTYPEDEF_FONT
# define _XTYPEDEF_FONT
typedef XID Font;
#endif
#ifndef _XTYPEDEF_FSID
# ifndef _XSERVER64
typedef unsigned long FSID;
# else
typedef CARD32 FSID;
# endif
#endif
typedef FSID AccContext;
/* OS independent time value
XXX Should probably go in Xos.h */
typedef struct timeval **OSTimePtr;
typedef void (* BlockHandlerProcPtr)(void * /* blockData */,
OSTimePtr /* pTimeout */,
void * /* pReadmask */);
#endif

View File

@ -0,0 +1,181 @@
/*
* Copyright 1989 Network Computing Devices, Inc., Mountain View, California.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted, provided
* that the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of N.C.D. not be used in advertising or
* publicity pertaining to distribution of the software without specific,
* written prior permission. N.C.D. makes no representations about the
* suitability of this software for any purpose. It is provided "as is"
* without express or implied warranty.
*
*/
#ifndef _XDMCP_H_
#define _XDMCP_H_
#include <X11/Xmd.h>
#include <X11/Xfuncproto.h>
_XFUNCPROTOBEGIN
#define XDM_PROTOCOL_VERSION 1
#define XDM_UDP_PORT 177
/* IANA has assigned FF0X:0:0:0:0:0:0:12B as the permanently assigned
* multicast addresses for XDMCP, where X in the prefix may be replaced
* by any valid scope identifier, such as 1 for Node-Local, 2 for Link-Local,
* 5 for Site-Local, and so on. We set the default here to the Link-Local
* version to most closely match the old IPv4 subnet broadcast behavior.
* Both xdm and X -query allow specifying a different address if a different
* scope is defined.
*/
#define XDM_DEFAULT_MCAST_ADDR6 "ff02:0:0:0:0:0:0:12b"
#define XDM_MAX_MSGLEN 8192
#define XDM_MIN_RTX 2
#define XDM_MAX_RTX 32
#define XDM_RTX_LIMIT 7
#define XDM_KA_RTX_LIMIT 4
#define XDM_DEF_DORMANCY (3 * 60) /* 3 minutes */
#define XDM_MAX_DORMANCY (24 * 60 * 60) /* 24 hours */
typedef enum {
BROADCAST_QUERY = 1, QUERY, INDIRECT_QUERY, FORWARD_QUERY,
WILLING, UNWILLING, REQUEST, ACCEPT, DECLINE, MANAGE, REFUSE,
FAILED, KEEPALIVE, ALIVE
} xdmOpCode;
typedef enum {
XDM_QUERY, XDM_BROADCAST, XDM_INDIRECT, XDM_COLLECT_QUERY,
XDM_COLLECT_BROADCAST_QUERY, XDM_COLLECT_INDIRECT_QUERY,
XDM_START_CONNECTION, XDM_AWAIT_REQUEST_RESPONSE,
XDM_AWAIT_MANAGE_RESPONSE, XDM_MANAGE, XDM_RUN_SESSION, XDM_OFF,
XDM_AWAIT_USER_INPUT, XDM_KEEPALIVE, XDM_AWAIT_ALIVE_RESPONSE,
#if defined(IPv6) && defined(AF_INET6)
XDM_MULTICAST, XDM_COLLECT_MULTICAST_QUERY,
#endif
XDM_KEEP_ME_LAST
} xdmcp_states;
#ifdef NOTDEF
/* table of hosts */
#define XDM_MAX_STR_LEN 21
#define XDM_MAX_HOSTS 20
struct xdm_host_table {
struct sockaddr_in sockaddr;
char name[XDM_MAX_STR_LEN];
char status[XDM_MAX_STR_LEN];
};
#endif /* NOTDEF */
typedef CARD8 *CARD8Ptr;
typedef CARD16 *CARD16Ptr;
typedef CARD32 *CARD32Ptr;
typedef struct _ARRAY8 {
CARD16 length;
CARD8Ptr data;
} ARRAY8, *ARRAY8Ptr;
typedef struct _ARRAY16 {
CARD8 length;
CARD16Ptr data;
} ARRAY16, *ARRAY16Ptr;
typedef struct _ARRAY32 {
CARD8 length;
CARD32Ptr data;
} ARRAY32, *ARRAY32Ptr;
typedef struct _ARRAYofARRAY8 {
CARD8 length;
ARRAY8Ptr data;
} ARRAYofARRAY8, *ARRAYofARRAY8Ptr;
typedef struct _XdmcpHeader {
CARD16 version, opcode, length;
} XdmcpHeader, *XdmcpHeaderPtr;
typedef struct _XdmcpBuffer {
BYTE *data;
int size; /* size of buffer pointed by to data */
int pointer; /* current index into data */
int count; /* bytes read from network into data */
} XdmcpBuffer, *XdmcpBufferPtr;
typedef struct _XdmAuthKey {
BYTE data[8];
} XdmAuthKeyRec, *XdmAuthKeyPtr;
/* implementation-independent network address structure.
Equiv to sockaddr* for sockets. */
typedef char *XdmcpNetaddr;
extern int XdmcpWriteARRAY16(XdmcpBufferPtr buffer, const ARRAY16Ptr array);
extern int XdmcpWriteARRAY32(XdmcpBufferPtr buffer, const ARRAY32Ptr array);
extern int XdmcpWriteARRAY8(XdmcpBufferPtr buffer, const ARRAY8Ptr array);
extern int XdmcpWriteARRAYofARRAY8(XdmcpBufferPtr buffer, const ARRAYofARRAY8Ptr array);
extern int XdmcpWriteCARD16(XdmcpBufferPtr buffer, unsigned value);
extern int XdmcpWriteCARD32(XdmcpBufferPtr buffer, unsigned value);
extern int XdmcpWriteCARD8(XdmcpBufferPtr buffer, unsigned value);
extern int XdmcpWriteHeader(XdmcpBufferPtr buffer, const XdmcpHeaderPtr header);
extern int XdmcpFlush(int fd, XdmcpBufferPtr buffer, XdmcpNetaddr to, int tolen);
extern int XdmcpReadARRAY16(XdmcpBufferPtr buffer, ARRAY16Ptr array);
extern int XdmcpReadARRAY32(XdmcpBufferPtr buffer, ARRAY32Ptr array);
extern int XdmcpReadARRAY8(XdmcpBufferPtr buffer, ARRAY8Ptr array);
extern int XdmcpReadARRAYofARRAY8(XdmcpBufferPtr buffer, ARRAYofARRAY8Ptr array);
extern int XdmcpReadCARD16(XdmcpBufferPtr buffer, CARD16Ptr valuep);
extern int XdmcpReadCARD32(XdmcpBufferPtr buffer, CARD32Ptr valuep);
extern int XdmcpReadCARD8(XdmcpBufferPtr buffer, CARD8Ptr valuep);
extern int XdmcpReadHeader(XdmcpBufferPtr buffer, XdmcpHeaderPtr header);
extern int XdmcpFill(int fd, XdmcpBufferPtr buffer, XdmcpNetaddr from, int *fromlen);
extern int XdmcpReadRemaining(const XdmcpBufferPtr buffer);
extern void XdmcpDisposeARRAY8(ARRAY8Ptr array);
extern void XdmcpDisposeARRAY16(ARRAY16Ptr array);
extern void XdmcpDisposeARRAY32(ARRAY32Ptr array);
extern void XdmcpDisposeARRAYofARRAY8(ARRAYofARRAY8Ptr array);
extern int XdmcpCopyARRAY8(const ARRAY8Ptr src, ARRAY8Ptr dst);
extern int XdmcpARRAY8Equal(const ARRAY8Ptr array1, const ARRAY8Ptr array2);
extern void XdmcpGenerateKey (XdmAuthKeyPtr key);
extern void XdmcpIncrementKey (XdmAuthKeyPtr key);
extern void XdmcpDecrementKey (XdmAuthKeyPtr key);
#ifdef HASXDMAUTH
extern void XdmcpWrap(unsigned char *input, unsigned char *wrapper, unsigned char *output, int bytes);
extern void XdmcpUnwrap(unsigned char *input, unsigned char *wrapper, unsigned char *output, int bytes);
#endif
#ifndef TRUE
#define TRUE 1
#define FALSE 0
#endif
extern int XdmcpCompareKeys (const XdmAuthKeyPtr a, const XdmAuthKeyPtr b);
extern int XdmcpAllocARRAY16 (ARRAY16Ptr array, int length);
extern int XdmcpAllocARRAY32 (ARRAY32Ptr array, int length);
extern int XdmcpAllocARRAY8 (ARRAY8Ptr array, int length);
extern int XdmcpAllocARRAYofARRAY8 (ARRAYofARRAY8Ptr array, int length);
extern int XdmcpReallocARRAY16 (ARRAY16Ptr array, int length);
extern int XdmcpReallocARRAY32 (ARRAY32Ptr array, int length);
extern int XdmcpReallocARRAY8 (ARRAY8Ptr array, int length);
extern int XdmcpReallocARRAYofARRAY8 (ARRAYofARRAY8Ptr array, int length);
_XFUNCPROTOEND
#endif /* _XDMCP_H_ */

View File

@ -0,0 +1,221 @@
/* Xfuncproto.h. Generated from Xfuncproto.h.in by configure. */
/*
*
Copyright 1989, 1991, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*
*/
/* Definitions to make function prototypes manageable */
#ifndef _XFUNCPROTO_H_
#define _XFUNCPROTO_H_
#ifndef NeedFunctionPrototypes
#define NeedFunctionPrototypes 1
#endif /* NeedFunctionPrototypes */
#ifndef NeedVarargsPrototypes
#define NeedVarargsPrototypes 1
#endif /* NeedVarargsPrototypes */
#if NeedFunctionPrototypes
#ifndef NeedNestedPrototypes
#define NeedNestedPrototypes 1
#endif /* NeedNestedPrototypes */
#ifndef _Xconst
#define _Xconst const
#endif /* _Xconst */
/* Function prototype configuration (see configure for more info) */
#ifndef NARROWPROTO
#define NARROWPROTO /**/
#endif
#ifndef FUNCPROTO
#define FUNCPROTO 15
#endif
#ifndef NeedWidePrototypes
#ifdef NARROWPROTO
#define NeedWidePrototypes 0
#else
#define NeedWidePrototypes 1 /* default to make interropt. easier */
#endif
#endif /* NeedWidePrototypes */
#endif /* NeedFunctionPrototypes */
#ifndef _XFUNCPROTOBEGIN
#if defined(__cplusplus) || defined(c_plusplus) /* for C++ V2.0 */
#define _XFUNCPROTOBEGIN extern "C" { /* do not leave open across includes */
#define _XFUNCPROTOEND }
#else
#define _XFUNCPROTOBEGIN
#define _XFUNCPROTOEND
#endif
#endif /* _XFUNCPROTOBEGIN */
/* http://clang.llvm.org/docs/LanguageExtensions.html#has-attribute */
#ifndef __has_attribute
# define __has_attribute(x) 0 /* Compatibility with non-clang compilers. */
#endif
#ifndef __has_feature
# define __has_feature(x) 0 /* Compatibility with non-clang compilers. */
#endif
#ifndef __has_extension
# define __has_extension(x) 0 /* Compatibility with non-clang compilers. */
#endif
/* Added in X11R6.9, so available in any version of modular xproto */
#if __has_attribute(__sentinel__) || (defined(__GNUC__) && (__GNUC__ >= 4))
# define _X_SENTINEL(x) __attribute__ ((__sentinel__(x)))
#else
# define _X_SENTINEL(x)
#endif /* GNUC >= 4 */
/* Added in X11R6.9, so available in any version of modular xproto */
#if (__has_attribute(visibility) || (defined(__GNUC__) && (__GNUC__ >= 4))) \
&& !defined(__CYGWIN__) && !defined(__MINGW32__)
# define _X_EXPORT __attribute__((visibility("default")))
# define _X_HIDDEN __attribute__((visibility("hidden")))
# define _X_INTERNAL __attribute__((visibility("internal")))
#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
# define _X_EXPORT __global
# define _X_HIDDEN __hidden
# define _X_INTERNAL __hidden
#else /* not gcc >= 4 and not Sun Studio >= 8 */
# define _X_EXPORT
# define _X_HIDDEN
# define _X_INTERNAL
#endif /* GNUC >= 4 */
/* Branch prediction hints for individual conditionals */
/* requires xproto >= 7.0.9 */
#if defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 303)
# define _X_LIKELY(x) __builtin_expect(!!(x), 1)
# define _X_UNLIKELY(x) __builtin_expect(!!(x), 0)
#else /* not gcc >= 3.3 */
# define _X_LIKELY(x) (x)
# define _X_UNLIKELY(x) (x)
#endif
/* Bulk branch prediction hints via marking error path functions as "cold" */
/* requires xproto >= 7.0.25 */
#if __has_attribute(__cold__) || \
(defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 403)) /* 4.3+ */
# define _X_COLD __attribute__((__cold__))
#else
# define _X_COLD /* nothing */
#endif
/* Added in X11R6.9, so available in any version of modular xproto */
#if __has_attribute(deprecated) \
|| (defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 301)) \
|| (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5130))
# define _X_DEPRECATED __attribute__((deprecated))
#else /* not gcc >= 3.1 */
# define _X_DEPRECATED
#endif
/* requires xproto >= 7.0.30 */
#if __has_extension(attribute_deprecated_with_message) || \
(defined(__GNUC__) && ((__GNUC__ >= 5) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5))))
# define _X_DEPRECATED_MSG(_msg) __attribute__((deprecated(_msg)))
#else
# define _X_DEPRECATED_MSG(_msg) _X_DEPRECATED
#endif
/* requires xproto >= 7.0.17 */
#if __has_attribute(noreturn) \
|| (defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 205)) \
|| (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
# define _X_NORETURN __attribute((noreturn))
#else
# define _X_NORETURN
#endif /* GNUC */
/* Added in X11R6.9, so available in any version of modular xproto */
#if __has_attribute(__format__) \
|| defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 203)
# define _X_ATTRIBUTE_PRINTF(x,y) __attribute__((__format__(__printf__,x,y)))
#else /* not gcc >= 2.3 */
# define _X_ATTRIBUTE_PRINTF(x,y)
#endif
/* requires xproto >= 7.0.22 - since this uses either gcc or C99 variable
argument macros, must be only used inside #ifdef _X_NONNULL guards, as
many legacy X clients are compiled in C89 mode still. */
#if __has_attribute(nonnull) \
&& defined(__STDC_VERSION__) && (__STDC_VERSION__ - 0 >= 199901L) /* C99 */
#define _X_NONNULL(...) __attribute__((nonnull(__VA_ARGS__)))
#elif __has_attribute(nonnull) \
|| defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 303)
#define _X_NONNULL(args...) __attribute__((nonnull(args)))
#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ - 0 >= 199901L) /* C99 */
#define _X_NONNULL(...) /* */
#endif
/* requires xproto >= 7.0.22 */
#if __has_attribute(__unused__) \
|| defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 205)
#define _X_UNUSED __attribute__((__unused__))
#else
#define _X_UNUSED /* */
#endif
/* C99 keyword "inline" or equivalent extensions in pre-C99 compilers */
/* requires xproto >= 7.0.9
(introduced in 7.0.8 but didn't support all compilers until 7.0.9) */
#if defined(inline) /* assume autoconf set it correctly */ || \
(defined(__STDC_VERSION__) && (__STDC_VERSION__ - 0 >= 199901L)) /* C99 */ || \
(defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550))
# define _X_INLINE inline
#elif defined(__GNUC__) && !defined(__STRICT_ANSI__) /* gcc w/C89+extensions */
# define _X_INLINE __inline__
#else
# define _X_INLINE
#endif
/* C99 keyword "restrict" or equivalent extensions in pre-C99 compilers */
/* requires xproto >= 7.0.21 */
#ifndef _X_RESTRICT_KYWD
# if defined(restrict) /* assume autoconf set it correctly */ || \
(defined(__STDC_VERSION__) && (__STDC_VERSION__ - 0 >= 199901L) /* C99 */ \
&& !defined(__cplusplus)) /* Workaround g++ issue on Solaris */
# define _X_RESTRICT_KYWD restrict
# elif defined(__GNUC__) && !defined(__STRICT_ANSI__) /* gcc w/C89+extensions */
# define _X_RESTRICT_KYWD __restrict__
# else
# define _X_RESTRICT_KYWD
# endif
#endif
/* requires xproto >= 7.0.30 */
#if __has_attribute(no_sanitize_thread)
# define _X_NOTSAN __attribute__((no_sanitize_thread))
#else
# define _X_NOTSAN
#endif
#endif /* _XFUNCPROTO_H_ */

View File

@ -0,0 +1,69 @@
/*
*
Copyright 1990, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*
*/
#ifndef _XFUNCS_H_
# define _XFUNCS_H_
# include <X11/Xosdefs.h>
/* the old Xfuncs.h, for pre-R6 */
# if !(defined(XFree86LOADER) && defined(IN_MODULE))
# ifdef X_USEBFUNCS
void bcopy();
void bzero();
int bcmp();
# else
# if defined(SYSV) && !defined(__SCO__) && !defined(__sun) && !defined(__UNIXWARE__) && !defined(_AIX)
# include <memory.h>
void bcopy();
# define bzero(b,len) memset(b, 0, len)
# define bcmp(b1,b2,len) memcmp(b1, b2, len)
# else
# include <string.h>
# if defined(__SCO__) || defined(__sun) || defined(__UNIXWARE__) || defined(__CYGWIN__) || defined(_AIX) || defined(__APPLE__)
# include <strings.h>
# endif
# define _XFUNCS_H_INCLUDED_STRING_H
# endif
# endif /* X_USEBFUNCS */
/* the new Xfuncs.h */
/* the ANSI C way */
# ifndef _XFUNCS_H_INCLUDED_STRING_H
# include <string.h>
# endif
# undef bzero
# define bzero(b,len) memset(b,0,len)
# if defined WIN32 && defined __MINGW32__
# define bcopy(b1,b2,len) memmove(b2, b1, (size_t)(len))
# endif
# endif /* !(defined(XFree86LOADER) && defined(IN_MODULE)) */
#endif /* _XFUNCS_H_ */

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,38 @@
/* include/X11/XlibConf.h. Generated from XlibConf.h.in by configure. */
/*
* Copyright © 2005 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of Keith Packard not be used in
* advertising or publicity pertaining to distribution of the software without
* specific, written prior permission. Keith Packard makes no
* representations about the suitability of this software for any purpose. It
* is provided "as is" without express or implied warranty.
*
* KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
* EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef _XLIBCONF_H_
#define _XLIBCONF_H_
/*
* This header file exports defines necessary to correctly
* use Xlibint.h both inside Xlib and by external libraries
* such as extensions.
*/
/* Threading support? */
#define XTHREADS 1
/* Use multi-threaded libc functions? */
#define XUSE_MTSAFE_API 1
#endif /* _XLIBCONF_H_ */

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,37 @@
/*
Copyright 1991, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall
not be used in advertising or otherwise to promote the sale, use or
other dealings in this Software without prior written authorization
from The Open Group.
*/
#ifndef _X11_XLOCALE_H_
#define _X11_XLOCALE_H_
#include <X11/Xfuncproto.h>
#include <X11/Xosdefs.h>
#include <locale.h>
#endif /* _X11_XLOCALE_H_ */

View File

@ -0,0 +1,142 @@
/***********************************************************
Copyright 1987, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
#ifndef XMD_H
# define XMD_H 1
/*
* Xmd.h: MACHINE DEPENDENT DECLARATIONS.
*/
/*
* Special per-machine configuration flags.
*/
# if defined(__sun) && defined(__SVR4)
# include <sys/isa_defs.h> /* Solaris: defines _LP64 if necessary */
# endif
# if defined (_LP64) || defined(__LP64__) || \
defined(__alpha) || defined(__alpha__) || \
defined(__ia64__) || defined(ia64) || \
defined(__sparc64__) || \
defined(__s390x__) || \
defined(__amd64__) || defined(amd64) || \
defined(__powerpc64__)
# if !defined(__ILP32__) /* amd64-x32 is 32bit */
# define LONG64 /* 32/64-bit architecture */
# endif /* !__ILP32__ */
# endif
/*
* Definition of macro used to set constants for size of network structures;
* machines with preprocessors that can't handle all of the sz_ symbols
* can define this macro to be sizeof(x) if and only if their compiler doesn't
* pad out structures (esp. the xTextElt structure which contains only two
* one-byte fields). Network structures should always define sz_symbols.
*
* The sz_ prefix is used instead of something more descriptive so that the
* symbols are no more than 32 characters long (which causes problems for some
* compilers and preprocessors).
*
* The extra indirection is to get macro arguments to expand correctly before
* the concatenation, rather than afterward.
*/
# define _SIZEOF(x) sz_##x
# define SIZEOF(x) _SIZEOF(x)
/*
* Bitfield suffixes for the protocol structure elements, if you
* need them. Note that bitfields are not guaranteed to be signed
* (or even unsigned) according to ANSI C.
*/
# define B32 /* bitfield not needed on architectures with native 32-bit type */
# define B16 /* bitfield not needed on architectures with native 16-bit type */
# ifdef LONG64
typedef long INT64;
typedef int INT32;
# else
typedef long INT32;
# endif
typedef short INT16;
typedef signed char INT8;
# ifdef LONG64
typedef unsigned long CARD64;
typedef unsigned int CARD32;
# else
typedef unsigned long long CARD64;
typedef unsigned long CARD32;
# endif
typedef unsigned short CARD16;
typedef unsigned char CARD8;
typedef CARD32 BITS32;
typedef CARD16 BITS16;
typedef CARD8 BYTE;
typedef CARD8 BOOL;
/*
* was definitions for sign-extending bitfields on architectures without
* native types smaller than 64-bit, now just backwards compatibility
*/
# define cvtINT8toInt(val) (val)
# define cvtINT16toInt(val) (val)
# define cvtINT32toInt(val) (val)
# define cvtINT8toShort(val) (val)
# define cvtINT16toShort(val) (val)
# define cvtINT32toShort(val) (val)
# define cvtINT8toLong(val) (val)
# define cvtINT16toLong(val) (val)
# define cvtINT32toLong(val) (val)
/*
* this version should leave result of type (t *), but that should only be
* used when not in MUSTCOPY
*/
# define NEXTPTR(p,t) (((t *)(p)) + 1)
#endif /* XMD_H */

View File

@ -0,0 +1,148 @@
/*
*
Copyright 1987, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*
* The X Window System is a Trademark of The Open Group.
*
*/
/* This is a collection of things to try and minimize system dependencies
* in a "significant" number of source files.
*/
#ifndef _XOS_H_
# define _XOS_H_
# include <X11/Xosdefs.h>
/*
* Get major data types (esp. caddr_t)
*/
# include <sys/types.h>
# if defined(__SCO__) || defined(__UNIXWARE__)
# include <stdint.h>
# endif
/*
* Just about everyone needs the strings routines. We provide both forms here,
* index/rindex and strchr/strrchr, so any systems that don't provide them all
* need to have #defines here.
*
* These macros are defined this way, rather than, e.g.:
* #defined index(s,c) strchr(s,c)
* because someone might be using them as function pointers, and such
* a change would break compatibility for anyone who's relying on them
* being the way they currently are. So we're stuck with them this way,
* which can be really inconvenient. :-(
*/
# include <string.h>
# if defined(__SCO__) || defined(__UNIXWARE__) || defined(__sun) || defined(__CYGWIN__) || defined(_AIX) || defined(__APPLE__)
# include <strings.h>
# else
# ifndef index
# define index(s,c) (strchr((s),(c)))
# endif
# ifndef rindex
# define rindex(s,c) (strrchr((s),(c)))
# endif
# endif
/*
* Get open(2) constants
*/
# if defined(X_NOT_POSIX)
# include <fcntl.h>
# if defined(USL) || defined(__i386__) && (defined(SYSV) || defined(SVR4))
# include <unistd.h>
# endif
# ifdef WIN32
# include <X11/Xw32defs.h>
# else
# include <sys/file.h>
# endif
# else /* X_NOT_POSIX */
# include <fcntl.h>
# include <unistd.h>
# endif /* X_NOT_POSIX else */
/*
* Get struct timeval and struct tm
*/
# if defined(_POSIX_SOURCE) && defined(SVR4)
/* need to omit _POSIX_SOURCE in order to get what we want in SVR4 */
# undef _POSIX_SOURCE
# include <sys/time.h>
# define _POSIX_SOURCE
# elif defined(WIN32)
# include <time.h>
# if !defined(_WINSOCKAPI_) && !defined(_WILLWINSOCK_) && !defined(_TIMEVAL_DEFINED) && !defined(_STRUCT_TIMEVAL)
struct timeval {
long tv_sec; /* seconds */
long tv_usec; /* and microseconds */
};
# define _TIMEVAL_DEFINED
# endif
# include <sys/timeb.h>
# define gettimeofday(t) \
{ \
struct _timeb _gtodtmp; \
_ftime (&_gtodtmp); \
(t)->tv_sec = _gtodtmp.time; \
(t)->tv_usec = _gtodtmp.millitm * 1000; \
}
# else
# include <sys/time.h>
# include <time.h>
# endif /* defined(_POSIX_SOURCE) && defined(SVR4) */
/* define X_GETTIMEOFDAY macro, a portable gettimeofday() */
# if defined(_XOPEN_XPG4) || defined(_XOPEN_UNIX) /* _XOPEN_UNIX is XPG4.2 */
# define X_GETTIMEOFDAY(t) gettimeofday(t, (struct timezone*)0)
# else
# if defined(SVR4) || defined(__SVR4) || defined(WIN32)
# define X_GETTIMEOFDAY(t) gettimeofday(t)
# else
# define X_GETTIMEOFDAY(t) gettimeofday(t, (struct timezone*)0)
# endif
# endif /* XPG4 else */
# ifdef __GNU__
# define PATH_MAX 4096
# define MAXPATHLEN 4096
# define OPEN_MAX 256 /* We define a reasonable limit. */
# endif
/* use POSIX name for signal */
# if defined(X_NOT_POSIX) && defined(SYSV) && !defined(SIGCHLD)
# define SIGCHLD SIGCLD
# endif
# include <X11/Xarch.h>
#endif /* _XOS_H_ */

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,116 @@
/*
* O/S-dependent (mis)feature macro definitions
*
Copyright 1991, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
#ifndef _XOSDEFS_H_
# define _XOSDEFS_H_
/*
* X_NOT_POSIX means does not have POSIX header files. Lack of this
* symbol does NOT mean that the POSIX environment is the default.
* You may still have to define _POSIX_SOURCE to get it.
*/
# ifdef _SCO_DS
# ifndef __SCO__
# define __SCO__
# endif
# endif
# ifdef __i386__
# ifdef SYSV
# if !defined(__SCO__) && \
!defined(__UNIXWARE__) && !defined(__sun)
# if !defined(_POSIX_SOURCE)
# define X_NOT_POSIX
# endif
# endif
# endif
# endif
# ifdef __sun
/* Imake configs define SVR4 on Solaris, but cc & gcc only define __SVR4
* This check allows non-Imake configured programs to build correctly.
*/
# if defined(__SVR4) && !defined(SVR4)
# define SVR4 1
# endif
# ifdef SVR4
/* define this to whatever it needs to be */
# define X_POSIX_C_SOURCE 199300L
# endif
# endif
# ifdef WIN32
# ifndef _POSIX_
# define X_NOT_POSIX
# endif
# endif
# ifdef __APPLE__
# define NULL_NOT_ZERO
/* Defining any of these will sanitize the namespace to JUST want is defined by
* that particular standard. If that happens, we don't get some expected
* prototypes, typedefs, etc (like fd_mask). We can define _DARWIN_C_SOURCE to
* loosen our belts a tad.
*/
# if defined(_XOPEN_SOURCE) || defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE)
# ifndef _DARWIN_C_SOURCE
# define _DARWIN_C_SOURCE
# endif
# endif
# endif
# ifdef __GNU__
# ifndef PATH_MAX
# define PATH_MAX 4096
# endif
# ifndef MAXPATHLEN
# define MAXPATHLEN 4096
# endif
# endif
# if defined(__SCO__) || defined(__UNIXWARE__)
# ifndef PATH_MAX
# define PATH_MAX 1024
# endif
# ifndef MAXPATHLEN
# define MAXPATHLEN 1024
# endif
# endif
# if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) \
|| defined(__APPLE__) || defined(__DragonFly__)
# ifndef CSRG_BASED
# define CSRG_BASED
# endif
# endif
#endif /* _XOSDEFS_H_ */

View File

@ -0,0 +1,230 @@
/*
Copyright 1994, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall
not be used in advertising or otherwise to promote the sale, use or
other dealings in this Software without prior written authorization
from The Open Group.
*/
/*
* Copyright © 2005 Daniel Stone
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of Daniel Stone not be used in advertising
* or publicity pertaining to distribution of the software without specific,
* written prior permission. Daniel Stone makes no representations about the
* suitability of this software for any purpose. It is provided "as is"
* without express or implied warranty.
*
* DANIEL STONE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
* ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
* DANIEL STONE BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
* ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef _XPOLL_H_
#define _XPOLL_H_
#if !defined(WIN32) || defined(__CYGWIN__)
#ifndef USE_POLL
#include <X11/Xos.h>
#include <sys/select.h> /* Get the FD_* macros. */
#include <X11/Xmd.h>
#ifdef CSRG_BASED
#include <sys/param.h>
# if BSD < 199103
typedef long fd_mask;
# endif
#endif
#if defined(FD_SETSIZE) && FD_SETSIZE < 512
# define XFD_SETSIZE FD_SETSIZE
#else
# define XFD_SETSIZE 512
# ifndef FD_SETSIZE
# define FD_SETSIZE XFD_SETSIZE
# endif
#endif
#ifndef NBBY
#define NBBY 8 /* number of bits in a byte */
#endif
#ifndef NFDBITS
#define NFDBITS (sizeof(fd_mask) * NBBY) /* bits per mask */
#endif
#ifndef howmany
#define howmany(x,y) (((x)+((y)-1))/(y))
#endif
#if defined(BSD) && BSD < 198911
typedef struct fd_set {
fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)];
} fd_set;
#endif
# define Select(n,r,w,e,t) select(n,(fd_set*)r,(fd_set*)w,(fd_set*)e,(struct timeval*)t)
#define __X_FDS_BITS __fds_bits
#ifndef __FDS_BITS
# define __FDS_BITS(p) ((p)->__X_FDS_BITS)
#endif
#define __XFDS_BITS(p, n) (__FDS_BITS(p))[n]
#ifndef FD_SET
#define FD_SET(n, p) (__XFDS_BITS(p, ((n)/NFDBITS)) |= ((fd_mask)1 << ((n) % NFDBITS)))
#endif
#ifndef FD_CLR
#define FD_CLR(n, p) (__XFDS_BITS((p), ((n)/NFDBITS)) &= ~((fd_mask)1 << ((n) % NFDBITS)))
#endif
#ifndef FD_ISSET
#define FD_ISSET(n, p) ((__XFDS_BITS((p), ((n)/NFDBITS))) & ((fd_mask)1 << ((n) % NFDBITS)))
#endif
#ifndef FD_ZERO
#define FD_ZERO(p) bzero((char *)(p), sizeof(*(p)))
#endif
/*
* The howmany(FD_SETSIZE, NFDBITS) computes the number of elements in the
* array. before accessing an element in the array we check it exists.
* If it does not exist then the compiler discards the code to access it.
*/
#define XFD_ANYSET(p) \
((howmany(FD_SETSIZE, NFDBITS) > 0 && (__XFDS_BITS(p, 0))) || \
(howmany(FD_SETSIZE, NFDBITS) > 1 && (__XFDS_BITS(p, 1))) || \
(howmany(FD_SETSIZE, NFDBITS) > 2 && (__XFDS_BITS(p, 2))) || \
(howmany(FD_SETSIZE, NFDBITS) > 3 && (__XFDS_BITS(p, 3))) || \
(howmany(FD_SETSIZE, NFDBITS) > 4 && (__XFDS_BITS(p, 4))) || \
(howmany(FD_SETSIZE, NFDBITS) > 5 && (__XFDS_BITS(p, 5))) || \
(howmany(FD_SETSIZE, NFDBITS) > 6 && (__XFDS_BITS(p, 6))) || \
(howmany(FD_SETSIZE, NFDBITS) > 7 && (__XFDS_BITS(p, 7))) || \
(howmany(FD_SETSIZE, NFDBITS) > 8 && (__XFDS_BITS(p, 8))) || \
(howmany(FD_SETSIZE, NFDBITS) > 9 && (__XFDS_BITS(p, 9))) || \
(howmany(FD_SETSIZE, NFDBITS) > 10 && (__XFDS_BITS(p, 10))) || \
(howmany(FD_SETSIZE, NFDBITS) > 11 && (__XFDS_BITS(p, 11))) || \
(howmany(FD_SETSIZE, NFDBITS) > 12 && (__XFDS_BITS(p, 12))) || \
(howmany(FD_SETSIZE, NFDBITS) > 13 && (__XFDS_BITS(p, 13))) || \
(howmany(FD_SETSIZE, NFDBITS) > 14 && (__XFDS_BITS(p, 14))) || \
(howmany(FD_SETSIZE, NFDBITS) > 15 && (__XFDS_BITS(p, 15))))
#define XFD_COPYSET(src,dst) { \
int __i__; \
for (__i__ = 0; __i__ < howmany(FD_SETSIZE, NFDBITS); __i__++) \
__XFDS_BITS((dst), __i__) = __XFDS_BITS((src), __i__); \
}
#define XFD_ANDSET(dst,b1,b2) { \
int __i__; \
for (__i__ = 0; __i__ < howmany(FD_SETSIZE, NFDBITS); __i__++) \
__XFDS_BITS((dst), __i__) = ((__XFDS_BITS((b1), __i__)) & (__XFDS_BITS((b2), __i__))); \
}
#define XFD_ORSET(dst,b1,b2) { \
int __i__; \
for (__i__ = 0; __i__ < howmany(FD_SETSIZE, NFDBITS); __i__++) \
__XFDS_BITS((dst), __i__) = ((__XFDS_BITS((b1), __i__)) | (__XFDS_BITS((b2), __i__))); \
}
#define XFD_UNSET(dst,b1) { \
int __i__; \
for (__i__ = 0; __i__ < howmany(FD_SETSIZE, NFDBITS); __i__++) \
__XFDS_BITS((dst), __i__) &= ~(__XFDS_BITS((b1), __i__)); \
}
#else /* USE_POLL */
#include <sys/poll.h>
#endif /* USE_POLL */
#else /* WIN32 */
#define XFD_SETSIZE 512
#ifndef FD_SETSIZE
#define FD_SETSIZE XFD_SETSIZE
#endif
#include <X11/Xwinsock.h>
#define Select(n,r,w,e,t) select(0,(fd_set*)r,(fd_set*)w,(fd_set*)e,(struct timeval*)t)
#define XFD_SETCOUNT(p) (((fd_set FAR *)(p))->fd_count)
#define XFD_FD(p,i) (((fd_set FAR *)(p))->fd_array[i])
#define XFD_ANYSET(p) XFD_SETCOUNT(p)
#define XFD_COPYSET(src,dst) { \
u_int __i; \
FD_ZERO(dst); \
for (__i = 0; __i < XFD_SETCOUNT(src) ; __i++) { \
XFD_FD(dst,__i) = XFD_FD(src,__i); \
} \
XFD_SETCOUNT(dst) = XFD_SETCOUNT(src); \
}
#define XFD_ANDSET(dst,b1,b2) { \
u_int __i; \
FD_ZERO(dst); \
for (__i = 0; __i < XFD_SETCOUNT(b1) ; __i++) { \
if (FD_ISSET(XFD_FD(b1,__i), b2)) \
FD_SET(XFD_FD(b1,__i), dst); \
} \
}
#define XFD_ORSET(dst,b1,b2) { \
u_int __i; \
if (dst != b1) XFD_COPYSET(b1,dst); \
for (__i = 0; __i < XFD_SETCOUNT(b2) ; __i++) { \
if (!FD_ISSET(XFD_FD(b2,__i), dst)) \
FD_SET(XFD_FD(b2,__i), dst); \
} \
}
/* this one is really sub-optimal */
#define XFD_UNSET(dst,b1) { \
u_int __i; \
for (__i = 0; __i < XFD_SETCOUNT(b1) ; __i++) { \
FD_CLR(XFD_FD(b1,__i), dst); \
} \
}
/* we have to pay the price of having an array here, unlike with bitmasks
calling twice FD_SET with the same fd is not transparent, so be careful */
#undef FD_SET
#define FD_SET(fd,set) do { \
if (XFD_SETCOUNT(set) < FD_SETSIZE && !FD_ISSET(fd,set)) \
XFD_FD(set,XFD_SETCOUNT(set)++)=(fd); \
} while(0)
#define getdtablesize() FD_SETSIZE
#endif /* WIN32 */
#endif /* _XPOLL_H_ */

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,77 @@
#ifndef XPROTOSTRUCTS_H
#define XPROTOSTRUCTS_H
/***********************************************************
Copyright 1987, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
#include <X11/Xmd.h>
/* Used by PolySegment */
typedef struct _xSegment {
INT16 x1 B16, y1 B16, x2 B16, y2 B16;
} xSegment;
/* POINT */
typedef struct _xPoint {
INT16 x B16, y B16;
} xPoint;
typedef struct _xRectangle {
INT16 x B16, y B16;
CARD16 width B16, height B16;
} xRectangle;
/* ARC */
typedef struct _xArc {
INT16 x B16, y B16;
CARD16 width B16, height B16;
INT16 angle1 B16, angle2 B16;
} xArc;
#endif /* XPROTOSTRUCTS_H */

View File

@ -0,0 +1,190 @@
/************************************************************************
Copyright 1987, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
************************************************************************/
#ifndef _X11_XREGION_H_
#define _X11_XREGION_H_
typedef struct {
short x1, x2, y1, y2;
} Box, BOX, BoxRec, *BoxPtr;
typedef struct {
short x, y, width, height;
}RECTANGLE, RectangleRec, *RectanglePtr;
#define TRUE 1
#define FALSE 0
#define MAXSHORT 32767
#define MINSHORT -MAXSHORT
#ifndef MAX
#define MAX(a,b) (((a) > (b)) ? (a) : (b))
#endif
#ifndef MIN
#define MIN(a,b) (((a) < (b)) ? (a) : (b))
#endif
/*
* clip region
*/
typedef struct _XRegion {
long size;
long numRects;
BOX *rects;
BOX extents;
} REGION;
/* Xutil.h contains the declaration:
* typedef struct _XRegion *Region;
*/
/* 1 if two BOXs overlap.
* 0 if two BOXs do not overlap.
* Remember, x2 and y2 are not in the region
*/
#define EXTENTCHECK(r1, r2) \
((r1)->x2 > (r2)->x1 && \
(r1)->x1 < (r2)->x2 && \
(r1)->y2 > (r2)->y1 && \
(r1)->y1 < (r2)->y2)
/*
* update region extents
*/
#define EXTENTS(r,idRect){\
if((r)->x1 < (idRect)->extents.x1)\
(idRect)->extents.x1 = (r)->x1;\
if((r)->y1 < (idRect)->extents.y1)\
(idRect)->extents.y1 = (r)->y1;\
if((r)->x2 > (idRect)->extents.x2)\
(idRect)->extents.x2 = (r)->x2;\
if((r)->y2 > (idRect)->extents.y2)\
(idRect)->extents.y2 = (r)->y2;\
}
/*
* Check to see if there is enough memory in the present region.
*/
#define MEMCHECK(reg, rect, firstrect){\
if ((reg)->numRects >= ((reg)->size - 1)){\
BoxPtr tmpRect = Xrealloc ((firstrect), \
(2 * (sizeof(BOX)) * ((reg)->size))); \
if (tmpRect == NULL) \
return(0);\
(firstrect) = tmpRect; \
(reg)->size *= 2;\
(rect) = &(firstrect)[(reg)->numRects];\
}\
}
/* this routine checks to see if the previous rectangle is the same
* or subsumes the new rectangle to add.
*/
#define CHECK_PREVIOUS(Reg, R, Rx1, Ry1, Rx2, Ry2)\
(!(((Reg)->numRects > 0)&&\
((R-1)->y1 == (Ry1)) &&\
((R-1)->y2 == (Ry2)) &&\
((R-1)->x1 <= (Rx1)) &&\
((R-1)->x2 >= (Rx2))))
/* add a rectangle to the given Region */
#define ADDRECT(reg, r, rx1, ry1, rx2, ry2){\
if (((rx1) < (rx2)) && ((ry1) < (ry2)) &&\
CHECK_PREVIOUS((reg), (r), (rx1), (ry1), (rx2), (ry2))){\
(r)->x1 = (rx1);\
(r)->y1 = (ry1);\
(r)->x2 = (rx2);\
(r)->y2 = (ry2);\
EXTENTS((r), (reg));\
(reg)->numRects++;\
(r)++;\
}\
}
/* add a rectangle to the given Region */
#define ADDRECTNOX(reg, r, rx1, ry1, rx2, ry2){\
if ((rx1 < rx2) && (ry1 < ry2) &&\
CHECK_PREVIOUS((reg), (r), (rx1), (ry1), (rx2), (ry2))){\
(r)->x1 = (rx1);\
(r)->y1 = (ry1);\
(r)->x2 = (rx2);\
(r)->y2 = (ry2);\
(reg)->numRects++;\
(r)++;\
}\
}
#define EMPTY_REGION(pReg) pReg->numRects = 0
#define REGION_NOT_EMPTY(pReg) pReg->numRects
#define INBOX(r, x, y) \
( ( ((r).x2 > x)) && \
( ((r).x1 <= x)) && \
( ((r).y2 > y)) && \
( ((r).y1 <= y)) )
/*
* number of points to buffer before sending them off
* to scanlines() : Must be an even number
*/
#define NUMPTSTOBUFFER 200
/*
* used to allocate buffers for points and link
* the buffers together
*/
typedef struct _POINTBLOCK {
XPoint pts[NUMPTSTOBUFFER];
struct _POINTBLOCK *next;
} POINTBLOCK;
#endif /* _X11_XREGION_H_ */

View File

@ -0,0 +1,358 @@
/***********************************************************
Copyright 1987, 1988, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
#ifndef _X11_XRESOURCE_H_
#define _X11_XRESOURCE_H_
#ifndef _XP_PRINT_SERVER_
#include <X11/Xlib.h>
#endif
/****************************************************************
****************************************************************
*** ***
*** ***
*** X Resource Manager Intrinsics ***
*** ***
*** ***
****************************************************************
****************************************************************/
_XFUNCPROTOBEGIN
/****************************************************************
*
* Memory Management
*
****************************************************************/
extern char *Xpermalloc(
unsigned int /* size */
);
/****************************************************************
*
* Quark Management
*
****************************************************************/
typedef int XrmQuark, *XrmQuarkList;
#define NULLQUARK ((XrmQuark) 0)
typedef char *XrmString;
#define NULLSTRING ((XrmString) 0)
/* find quark for string, create new quark if none already exists */
extern XrmQuark XrmStringToQuark(
_Xconst char* /* string */
);
extern XrmQuark XrmPermStringToQuark(
_Xconst char* /* string */
);
/* find string for quark */
extern XrmString XrmQuarkToString(
XrmQuark /* quark */
);
extern XrmQuark XrmUniqueQuark(
void
);
#define XrmStringsEqual(a1, a2) (strcmp(a1, a2) == 0)
/****************************************************************
*
* Conversion of Strings to Lists
*
****************************************************************/
typedef enum {XrmBindTightly, XrmBindLoosely} XrmBinding, *XrmBindingList;
extern void XrmStringToQuarkList(
_Xconst char* /* string */,
XrmQuarkList /* quarks_return */
);
extern void XrmStringToBindingQuarkList(
_Xconst char* /* string */,
XrmBindingList /* bindings_return */,
XrmQuarkList /* quarks_return */
);
/****************************************************************
*
* Name and Class lists.
*
****************************************************************/
typedef XrmQuark XrmName;
typedef XrmQuarkList XrmNameList;
#define XrmNameToString(name) XrmQuarkToString(name)
#define XrmStringToName(string) XrmStringToQuark(string)
#define XrmStringToNameList(str, name) XrmStringToQuarkList(str, name)
typedef XrmQuark XrmClass;
typedef XrmQuarkList XrmClassList;
#define XrmClassToString(c_class) XrmQuarkToString(c_class)
#define XrmStringToClass(c_class) XrmStringToQuark(c_class)
#define XrmStringToClassList(str,c_class) XrmStringToQuarkList(str, c_class)
/****************************************************************
*
* Resource Representation Types and Values
*
****************************************************************/
typedef XrmQuark XrmRepresentation;
#define XrmStringToRepresentation(string) XrmStringToQuark(string)
#define XrmRepresentationToString(type) XrmQuarkToString(type)
typedef struct {
unsigned int size;
XPointer addr;
} XrmValue, *XrmValuePtr;
/****************************************************************
*
* Resource Manager Functions
*
****************************************************************/
typedef struct _XrmHashBucketRec *XrmHashBucket;
typedef XrmHashBucket *XrmHashTable;
typedef XrmHashTable XrmSearchList[];
typedef struct _XrmHashBucketRec *XrmDatabase;
extern void XrmDestroyDatabase(
XrmDatabase /* database */
);
extern void XrmQPutResource(
XrmDatabase* /* database */,
XrmBindingList /* bindings */,
XrmQuarkList /* quarks */,
XrmRepresentation /* type */,
XrmValue* /* value */
);
extern void XrmPutResource(
XrmDatabase* /* database */,
_Xconst char* /* specifier */,
_Xconst char* /* type */,
XrmValue* /* value */
);
extern void XrmQPutStringResource(
XrmDatabase* /* database */,
XrmBindingList /* bindings */,
XrmQuarkList /* quarks */,
_Xconst char* /* value */
);
extern void XrmPutStringResource(
XrmDatabase* /* database */,
_Xconst char* /* specifier */,
_Xconst char* /* value */
);
extern void XrmPutLineResource(
XrmDatabase* /* database */,
_Xconst char* /* line */
);
extern Bool XrmQGetResource(
XrmDatabase /* database */,
XrmNameList /* quark_name */,
XrmClassList /* quark_class */,
XrmRepresentation* /* quark_type_return */,
XrmValue* /* value_return */
);
extern Bool XrmGetResource(
XrmDatabase /* database */,
_Xconst char* /* str_name */,
_Xconst char* /* str_class */,
char** /* str_type_return */,
XrmValue* /* value_return */
);
extern Bool XrmQGetSearchList(
XrmDatabase /* database */,
XrmNameList /* names */,
XrmClassList /* classes */,
XrmSearchList /* list_return */,
int /* list_length */
);
extern Bool XrmQGetSearchResource(
XrmSearchList /* list */,
XrmName /* name */,
XrmClass /* class */,
XrmRepresentation* /* type_return */,
XrmValue* /* value_return */
);
/****************************************************************
*
* Resource Database Management
*
****************************************************************/
#ifndef _XP_PRINT_SERVER_
extern void XrmSetDatabase(
Display* /* display */,
XrmDatabase /* database */
);
extern XrmDatabase XrmGetDatabase(
Display* /* display */
);
#endif /* !_XP_PRINT_SERVER_ */
extern XrmDatabase XrmGetFileDatabase(
_Xconst char* /* filename */
);
extern Status XrmCombineFileDatabase(
_Xconst char* /* filename */,
XrmDatabase* /* target */,
Bool /* override */
);
extern XrmDatabase XrmGetStringDatabase(
_Xconst char* /* data */ /* null terminated string */
);
extern void XrmPutFileDatabase(
XrmDatabase /* database */,
_Xconst char* /* filename */
);
extern void XrmMergeDatabases(
XrmDatabase /* source_db */,
XrmDatabase* /* target_db */
);
extern void XrmCombineDatabase(
XrmDatabase /* source_db */,
XrmDatabase* /* target_db */,
Bool /* override */
);
#define XrmEnumAllLevels 0
#define XrmEnumOneLevel 1
extern Bool XrmEnumerateDatabase(
XrmDatabase /* db */,
XrmNameList /* name_prefix */,
XrmClassList /* class_prefix */,
int /* mode */,
Bool (*)(
XrmDatabase* /* db */,
XrmBindingList /* bindings */,
XrmQuarkList /* quarks */,
XrmRepresentation* /* type */,
XrmValue* /* value */,
XPointer /* closure */
) /* proc */,
XPointer /* closure */
);
extern const char *XrmLocaleOfDatabase(
XrmDatabase /* database */
);
/****************************************************************
*
* Command line option mapping to resource entries
*
****************************************************************/
typedef enum {
XrmoptionNoArg, /* Value is specified in OptionDescRec.value */
XrmoptionIsArg, /* Value is the option string itself */
XrmoptionStickyArg, /* Value is characters immediately following option */
XrmoptionSepArg, /* Value is next argument in argv */
XrmoptionResArg, /* Resource and value in next argument in argv */
XrmoptionSkipArg, /* Ignore this option and the next argument in argv */
XrmoptionSkipLine, /* Ignore this option and the rest of argv */
XrmoptionSkipNArgs /* Ignore this option and the next
OptionDescRes.value arguments in argv */
} XrmOptionKind;
typedef struct {
char *option; /* Option abbreviation in argv */
char *specifier; /* Resource specifier */
XrmOptionKind argKind; /* Which style of option it is */
XPointer value; /* Value to provide if XrmoptionNoArg */
} XrmOptionDescRec, *XrmOptionDescList;
extern void XrmParseCommand(
XrmDatabase* /* database */,
XrmOptionDescList /* table */,
int /* table_count */,
_Xconst char* /* name */,
int* /* argc_in_out */,
char** /* argv_in_out */
);
_XFUNCPROTOEND
#endif /* _X11_XRESOURCE_H_ */
/* DON'T ADD STUFF AFTER THIS #endif */

View File

@ -0,0 +1,314 @@
/*
*
Copyright 1993, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
* *
*/
#ifndef _XTHREADS_H_
# define _XTHREADS_H_
/* Redefine these to XtMalloc/XtFree or whatever you want before including
* this header file.
*/
# ifndef xmalloc
# define xmalloc malloc
# endif
# ifndef xfree
# define xfree free
# endif
# ifdef CTHREADS
# include <cthreads.h>
typedef cthread_t xthread_t;
typedef struct condition xcondition_rec;
typedef struct mutex xmutex_rec;
# define xthread_init() cthread_init()
# define xthread_self cthread_self
# define xthread_fork(func,closure) cthread_fork(func,closure)
# define xthread_yield() cthread_yield()
# define xthread_exit(v) cthread_exit(v)
# define xthread_set_name(t,str) cthread_set_name(t,str)
# define xmutex_init(m) mutex_init(m)
# define xmutex_clear(m) mutex_clear(m)
# define xmutex_lock(m) mutex_lock(m)
# define xmutex_unlock(m) mutex_unlock(m)
# define xmutex_set_name(m,str) mutex_set_name(m,str)
# define xcondition_init(cv) condition_init(cv)
# define xcondition_clear(cv) condition_clear(cv)
# define xcondition_wait(cv,m) condition_wait(cv,m)
# define xcondition_signal(cv) condition_signal(cv)
# define xcondition_broadcast(cv) condition_broadcast(cv)
# define xcondition_set_name(cv,str) condition_set_name(cv,str)
# else /* !CTHREADS */
# if defined(SVR4)
# include <thread.h>
# include <synch.h>
typedef thread_t xthread_t;
typedef thread_key_t xthread_key_t;
typedef cond_t xcondition_rec;
typedef mutex_t xmutex_rec;
# if defined(__UNIXWARE__)
extern xthread_t (*_x11_thr_self)();
# define xthread_self (_x11_thr_self)
# else
# define xthread_self thr_self
# endif
# define xthread_fork(func,closure) thr_create(NULL,0,func,closure,THR_NEW_LWP|THR_DETACHED,NULL)
# define xthread_yield() thr_yield()
# define xthread_exit(v) thr_exit(v)
# define xthread_key_create(kp,d) thr_keycreate(kp,d)
# ifdef __sun
# define xthread_key_delete(k) 0
# else
# define xthread_key_delete(k) thr_keydelete(k)
# endif
# define xthread_set_specific(k,v) thr_setspecific(k,v)
# define xthread_get_specific(k,vp) thr_getspecific(k,vp)
# define xmutex_init(m) mutex_init(m,USYNC_THREAD,0)
# define xmutex_clear(m) mutex_destroy(m)
# define xmutex_lock(m) mutex_lock(m)
# define xmutex_unlock(m) mutex_unlock(m)
# define xcondition_init(cv) cond_init(cv,USYNC_THREAD,0)
# define xcondition_clear(cv) cond_destroy(cv)
# define xcondition_wait(cv,m) cond_wait(cv,m)
# define xcondition_signal(cv) cond_signal(cv)
# define xcondition_broadcast(cv) cond_broadcast(cv)
# else /* !SVR4 */
# ifdef WIN32
# include <X11/Xwindows.h>
typedef DWORD xthread_t;
typedef DWORD xthread_key_t;
struct _xthread_waiter {
HANDLE sem;
struct _xthread_waiter *next;
};
typedef struct {
CRITICAL_SECTION cs;
struct _xthread_waiter *waiters;
} xcondition_rec;
typedef CRITICAL_SECTION xmutex_rec;
extern void _Xthread_init(void);
# define xthread_init() _Xthread_init()
# define xthread_self GetCurrentThreadId
# define xthread_fork(func,closure) { \
DWORD _tmptid; \
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)func, (LPVOID)closure, 0, \
&_tmptid); \
}
# define xthread_yield() Sleep(0)
# define xthread_exit(v) ExitThread((DWORD)(v))
# define xthread_key_create(kp,d) *(kp) = TlsAlloc()
# define xthread_key_delete(k) TlsFree(k)
# define xthread_set_specific(k,v) TlsSetValue(k,v)
# define xthread_get_specific(k,vp) TlsGetValue(k)
# define xmutex_init(m) InitializeCriticalSection(m)
# define xmutex_clear(m) DeleteCriticalSection(m)
# define _XMUTEX_NESTS
# define xmutex_lock(m) EnterCriticalSection(m)
# define xmutex_unlock(m) LeaveCriticalSection(m)
# define xcondition_init(cv) { \
InitializeCriticalSection(&(cv)->cs); \
(cv)->waiters = NULL; \
}
# define xcondition_clear(cv) DeleteCriticalSection(&(cv)->cs)
extern struct _xthread_waiter *_Xthread_waiter();
# define xcondition_wait(cv,m) { \
struct _xthread_waiter *_tmpthr = _Xthread_waiter(); \
EnterCriticalSection(&(cv)->cs); \
_tmpthr->next = (cv)->waiters; \
(cv)->waiters = _tmpthr; \
LeaveCriticalSection(&(cv)->cs); \
LeaveCriticalSection(m); \
WaitForSingleObject(_tmpthr->sem, INFINITE); \
EnterCriticalSection(m); \
}
# define xcondition_signal(cv) { \
EnterCriticalSection(&(cv)->cs); \
if ((cv)->waiters) { \
ReleaseSemaphore((cv)->waiters->sem, 1, NULL); \
(cv)->waiters = (cv)->waiters->next; \
} \
LeaveCriticalSection(&(cv)->cs); \
}
# define xcondition_broadcast(cv) { \
struct _xthread_waiter *_tmpthr; \
EnterCriticalSection(&(cv)->cs); \
for (_tmpthr = (cv)->waiters; _tmpthr; _tmpthr = _tmpthr->next) \
ReleaseSemaphore(_tmpthr->sem, 1, NULL); \
(cv)->waiters = NULL; \
LeaveCriticalSection(&(cv)->cs); \
}
# else /* !WIN32 */
# ifdef USE_TIS_SUPPORT
/*
* TIS support is intended for thread safe libraries.
* This should not be used for general client programming.
*/
# include <tis.h>
typedef pthread_t xthread_t;
typedef pthread_key_t xthread_key_t;
typedef pthread_cond_t xcondition_rec;
typedef pthread_mutex_t xmutex_rec;
# define xthread_self tis_self
# define xthread_fork(func,closure) { pthread_t _tmpxthr; \
pthread_create(&_tmpxthr,NULL,func,closure); }
# define xthread_yield() pthread_yield_np()
# define xthread_exit(v) pthread_exit(v)
# define xthread_key_create(kp,d) tis_key_create(kp,d)
# define xthread_key_delete(k) tis_key_delete(k)
# define xthread_set_specific(k,v) tis_setspecific(k,v)
# define xthread_get_specific(k,vp) *(vp) = tis_getspecific(k)
# define XMUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER
# define xmutex_init(m) tis_mutex_init(m)
# define xmutex_clear(m) tis_mutex_destroy(m)
# define xmutex_lock(m) tis_mutex_lock(m)
# define xmutex_unlock(m) tis_mutex_unlock(m)
# define xcondition_init(c) tis_cond_init(c)
# define xcondition_clear(c) tis_cond_destroy(c)
# define xcondition_wait(c,m) tis_cond_wait(c,m)
# define xcondition_signal(c) tis_cond_signal(c)
# define xcondition_broadcast(c) tis_cond_broadcast(c)
# else
# ifdef USE_NBSD_THREADLIB
/*
* NetBSD threadlib support is intended for thread safe libraries.
* This should not be used for general client programming.
*/
# include <threadlib.h>
typedef thr_t xthread_t;
typedef thread_key_t xthread_key_t;
typedef cond_t xcondition_rec;
typedef mutex_t xmutex_rec;
# define xthread_self thr_self
# define xthread_fork(func,closure) { thr_t _tmpxthr; \
/* XXX Create it detached? --thorpej */ \
thr_create(&_tmpxthr,NULL,func,closure); }
# define xthread_yield() thr_yield()
# define xthread_exit(v) thr_exit(v)
# define xthread_key_create(kp,d) thr_keycreate(kp,d)
# define xthread_key_delete(k) thr_keydelete(k)
# define xthread_set_specific(k,v) thr_setspecific(k,v)
# define xthread_get_specific(k,vp) *(vp) = thr_getspecific(k)
# define XMUTEX_INITIALIZER MUTEX_INITIALIZER
# define xmutex_init(m) mutex_init(m, 0)
# define xmutex_clear(m) mutex_destroy(m)
# define xmutex_lock(m) mutex_lock(m)
# define xmutex_unlock(m) mutex_unlock(m)
# define xcondition_init(c) cond_init(c, 0, 0)
# define xcondition_clear(c) cond_destroy(c)
# define xcondition_wait(c,m) cond_wait(c,m)
# define xcondition_signal(c) cond_signal(c)
# define xcondition_broadcast(c) cond_broadcast(c)
# else
# include <pthread.h>
typedef pthread_t xthread_t;
typedef pthread_key_t xthread_key_t;
typedef pthread_cond_t xcondition_rec;
typedef pthread_mutex_t xmutex_rec;
# define xthread_self pthread_self
# define xthread_yield() pthread_yield()
# define xthread_exit(v) pthread_exit(v)
# define xthread_set_specific(k,v) pthread_setspecific(k,v)
# define xmutex_clear(m) pthread_mutex_destroy(m)
# define xmutex_lock(m) pthread_mutex_lock(m)
# define xmutex_unlock(m) pthread_mutex_unlock(m)
# ifndef XPRE_STANDARD_API
# define xthread_key_create(kp,d) pthread_key_create(kp,d)
# define xthread_key_delete(k) pthread_key_delete(k)
# define xthread_get_specific(k,vp) *(vp) = pthread_getspecific(k)
# define xthread_fork(func,closure) { pthread_t _tmpxthr; \
pthread_create(&_tmpxthr,NULL,func,closure); }
# define XMUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER
# define xmutex_init(m) pthread_mutex_init(m, NULL)
# define xcondition_init(c) pthread_cond_init(c, NULL)
# else /* XPRE_STANDARD_API */
# define xthread_key_create(kp,d) pthread_keycreate(kp,d)
# define xthread_key_delete(k) 0
# define xthread_get_specific(k,vp) pthread_getspecific(k,vp)
# define xthread_fork(func,closure) { pthread_t _tmpxthr; \
pthread_create(&_tmpxthr,pthread_attr_default,func,closure); }
# define xmutex_init(m) pthread_mutex_init(m, pthread_mutexattr_default)
# define xcondition_init(c) pthread_cond_init(c, pthread_condattr_default)
# endif /* XPRE_STANDARD_API */
# define xcondition_clear(c) pthread_cond_destroy(c)
# define xcondition_wait(c,m) pthread_cond_wait(c,m)
# define xcondition_signal(c) pthread_cond_signal(c)
# define xcondition_broadcast(c) pthread_cond_broadcast(c)
# if defined(_DECTHREADS_)
static xthread_t _X_no_thread_id;
# define xthread_have_id(id) !pthread_equal(id, _X_no_thread_id)
# define xthread_clear_id(id) id = _X_no_thread_id
# define xthread_equal(id1,id2) pthread_equal(id1, id2)
# endif /* _DECTHREADS_ */
# if defined(__linux__)
# define xthread_have_id(id) !pthread_equal(id, 0)
# define xthread_clear_id(id) id = 0
# define xthread_equal(id1,id2) pthread_equal(id1, id2)
# endif /* linux */
# if defined(_CMA_VENDOR_) && defined(_CMA__IBM) && (_CMA_VENDOR_ == _CMA__IBM)
# ifdef DEBUG /* too much of a hack to enable normally */
/* see also cma__obj_set_name() */
# define xmutex_set_name(m,str) ((char**)(m)->field1)[5] = (str)
# define xcondition_set_name(cv,str) ((char**)(cv)->field1)[5] = (str)
# endif /* DEBUG */
# endif /* _CMA_VENDOR_ == _CMA__IBM */
# endif /* USE_NBSD_THREADLIB */
# endif /* USE_TIS_SUPPORT */
# endif /* WIN32 */
# endif /* SVR4 */
# endif /* CTHREADS */
typedef xcondition_rec *xcondition_t;
typedef xmutex_rec *xmutex_t;
# ifndef xcondition_malloc
# define xcondition_malloc() (xcondition_t)xmalloc(sizeof(xcondition_rec))
# endif
# ifndef xcondition_free
# define xcondition_free(c) xfree((char *)c)
# endif
# ifndef xmutex_malloc
# define xmutex_malloc() (xmutex_t)xmalloc(sizeof(xmutex_rec))
# endif
# ifndef xmutex_free
# define xmutex_free(m) xfree((char *)m)
# endif
# ifndef xthread_have_id
# define xthread_have_id(id) id
# endif
# ifndef xthread_clear_id
# define xthread_clear_id(id) id = 0
# endif
# ifndef xthread_equal
# define xthread_equal(id1,id2) ((id1) == (id2))
# endif
/* aids understood by some debuggers */
# ifndef xthread_set_name
# define xthread_set_name(t,str)
# endif
# ifndef xmutex_set_name
# define xmutex_set_name(m,str)
# endif
# ifndef xcondition_set_name
# define xcondition_set_name(cv,str)
# endif
#endif /* _XTHREADS_H_ */

View File

@ -0,0 +1,69 @@
/***********************************************************
Copyright 1987, 1988, 1994, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
#ifndef _Xtos_h
#define _Xtos_h
#define ALLOCATE_LOCAL_FALLBACK(_size) XtMalloc((unsigned long)(_size))
#define DEALLOCATE_LOCAL_FALLBACK(_ptr) XtFree((XtPointer)(_ptr))
#include <X11/Xalloca.h>
#if defined (_LP64) || \
defined(__alpha) || defined(__alpha__) || \
defined(__ia64__) || defined(ia64) || \
defined(__sparc64__) || \
defined(__s390x__) || \
(defined(__hppa__) && defined(__LP64__)) || \
defined(__amd64__) || defined(amd64) || \
defined(__powerpc64__) || \
(defined(sgi) && (_MIPS_SZLONG == 64))
#define LONG64
#endif
#endif /* _Xtos_h */
/* DON'T ADD STUFF AFTER THIS #endif */

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,466 @@
/*
Copyright 1993, 1994, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall
not be used in advertising or otherwise to promote the sale, use or
other dealings in this Software without prior written authorization
from The Open Group.
* Copyright 1993, 1994 NCR Corporation - Dayton, Ohio, USA
*
* All Rights Reserved
*
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted, provided
* that the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name NCR not be used in advertising
* or publicity pertaining to distribution of the software without specific,
* written prior permission. NCR makes no representations about the
* suitability of this software for any purpose. It is provided "as is"
* without express or implied warranty.
*
* NCR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
* NO EVENT SHALL NCR BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef _XTRANS_H_
#define _XTRANS_H_
#include <X11/Xfuncproto.h>
#include <X11/Xos.h>
#ifndef WIN32
#include <sys/socket.h>
#endif
#ifdef __clang__
/* Not all clients make use of all provided statics */
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-function"
#endif
/*
* Set the functions names according to where this code is being compiled.
*/
#ifdef X11_t
#define TRANS(func) _X11Trans##func
#ifdef XTRANSDEBUG
static const char *__xtransname = "_X11Trans";
#endif
#endif /* X11_t */
#ifdef XSERV_t
#define TRANS(func) _XSERVTrans##func
#ifdef XTRANSDEBUG
static const char *__xtransname = "_XSERVTrans";
#endif
#define X11_t
#endif /* XSERV_t */
#ifdef XIM_t
#define TRANS(func) _XimXTrans##func
#ifdef XTRANSDEBUG
static const char *__xtransname = "_XimTrans";
#endif
#endif /* XIM_t */
#ifdef FS_t
#define TRANS(func) _FSTrans##func
#ifdef XTRANSDEBUG
static const char *__xtransname = "_FSTrans";
#endif
#endif /* FS_t */
#ifdef FONT_t
#define TRANS(func) _FontTrans##func
#ifdef XTRANSDEBUG
static const char *__xtransname = "_FontTrans";
#endif
#endif /* FONT_t */
#ifdef ICE_t
#define TRANS(func) _IceTrans##func
#ifdef XTRANSDEBUG
static const char *__xtransname = "_IceTrans";
#endif
#endif /* ICE_t */
#ifdef TEST_t
#define TRANS(func) _TESTTrans##func
#ifdef XTRANSDEBUG
static const char *__xtransname = "_TESTTrans";
#endif
#endif /* TEST_t */
#ifdef LBXPROXY_t
#define TRANS(func) _LBXPROXYTrans##func
#define X11_t /* The server defines this - so should the LBX proxy */
#ifdef XTRANSDEBUG
static const char *__xtransname = "_LBXPROXYTrans";
#endif
#endif /* LBXPROXY_t */
#if !defined(TRANS)
#define TRANS(func) _XTrans##func
#ifdef XTRANSDEBUG
static const char *__xtransname = "_XTrans";
#endif
#endif /* !TRANS */
#ifdef __clang__
#pragma clang diagnostic pop
#endif
/*
* Create a single address structure that can be used wherever
* an address structure is needed. struct sockaddr is not big enough
* to hold a sockadd_un, so we create this definition to have a single
* structure that is big enough for all the structures we might need.
*
* This structure needs to be independent of the socket/TLI interface used.
*/
#if defined(IPv6) && defined(AF_INET6)
typedef struct sockaddr_storage Xtransaddr;
#else
#define XTRANS_MAX_ADDR_LEN 128 /* large enough to hold sun_path */
typedef struct {
unsigned char addr[XTRANS_MAX_ADDR_LEN];
} Xtransaddr;
#endif
#ifdef LONG64
typedef int BytesReadable_t;
#else
typedef long BytesReadable_t;
#endif
#if defined(WIN32) || defined(USG)
/*
* TRANS(Readv) and TRANS(Writev) use struct iovec, normally found
* in Berkeley systems in <sys/uio.h>. See the readv(2) and writev(2)
* manual pages for details.
*/
struct iovec {
caddr_t iov_base;
int iov_len;
};
#else
#include <sys/uio.h>
#endif
typedef struct _XtransConnInfo *XtransConnInfo;
/*
* Transport Option definitions
*/
#define TRANS_NONBLOCKING 1
#define TRANS_CLOSEONEXEC 2
/*
* Return values of Connect (0 is success)
*/
#define TRANS_CONNECT_FAILED -1
#define TRANS_TRY_CONNECT_AGAIN -2
#define TRANS_IN_PROGRESS -3
/*
* Return values of CreateListener (0 is success)
*/
#define TRANS_CREATE_LISTENER_FAILED -1
#define TRANS_ADDR_IN_USE -2
/*
* Return values of Accept (0 is success)
*/
#define TRANS_ACCEPT_BAD_MALLOC -1
#define TRANS_ACCEPT_FAILED -2
#define TRANS_ACCEPT_MISC_ERROR -3
/*
* ResetListener return values
*/
#define TRANS_RESET_NOOP 1
#define TRANS_RESET_NEW_FD 2
#define TRANS_RESET_FAILURE 3
/*
* Function prototypes for the exposed interface
*/
void TRANS(FreeConnInfo) (
XtransConnInfo /* ciptr */
);
#ifdef TRANS_CLIENT
XtransConnInfo TRANS(OpenCOTSClient)(
const char * /* address */
);
#endif /* TRANS_CLIENT */
#ifdef TRANS_SERVER
XtransConnInfo TRANS(OpenCOTSServer)(
const char * /* address */
);
#endif /* TRANS_SERVER */
#ifdef TRANS_CLIENT
XtransConnInfo TRANS(OpenCLTSClient)(
const char * /* address */
);
#endif /* TRANS_CLIENT */
#ifdef TRANS_SERVER
XtransConnInfo TRANS(OpenCLTSServer)(
const char * /* address */
);
#endif /* TRANS_SERVER */
#ifdef TRANS_REOPEN
XtransConnInfo TRANS(ReopenCOTSServer)(
int, /* trans_id */
int, /* fd */
const char * /* port */
);
XtransConnInfo TRANS(ReopenCLTSServer)(
int, /* trans_id */
int, /* fd */
const char * /* port */
);
int TRANS(GetReopenInfo)(
XtransConnInfo, /* ciptr */
int *, /* trans_id */
int *, /* fd */
char ** /* port */
);
#endif /* TRANS_REOPEN */
int TRANS(SetOption)(
XtransConnInfo, /* ciptr */
int, /* option */
int /* arg */
);
#ifdef TRANS_SERVER
int TRANS(CreateListener)(
XtransConnInfo, /* ciptr */
const char *, /* port */
unsigned int /* flags */
);
int TRANS(Received) (
const char* /* protocol*/
);
int TRANS(NoListen) (
const char* /* protocol*/
);
int TRANS(Listen) (
const char* /* protocol*/
);
int TRANS(IsListening) (
const char* /* protocol*/
);
int TRANS(ResetListener)(
XtransConnInfo /* ciptr */
);
XtransConnInfo TRANS(Accept)(
XtransConnInfo, /* ciptr */
int * /* status */
);
#endif /* TRANS_SERVER */
#ifdef TRANS_CLIENT
int TRANS(Connect)(
XtransConnInfo, /* ciptr */
const char * /* address */
);
#endif /* TRANS_CLIENT */
int TRANS(BytesReadable)(
XtransConnInfo, /* ciptr */
BytesReadable_t * /* pend */
);
int TRANS(Read)(
XtransConnInfo, /* ciptr */
char *, /* buf */
int /* size */
);
int TRANS(Write)(
XtransConnInfo, /* ciptr */
char *, /* buf */
int /* size */
);
int TRANS(Readv)(
XtransConnInfo, /* ciptr */
struct iovec *, /* buf */
int /* size */
);
int TRANS(Writev)(
XtransConnInfo, /* ciptr */
struct iovec *, /* buf */
int /* size */
);
int TRANS(SendFd) (XtransConnInfo ciptr, int fd, int do_close);
int TRANS(RecvFd) (XtransConnInfo ciptr);
int TRANS(Disconnect)(
XtransConnInfo /* ciptr */
);
int TRANS(Close)(
XtransConnInfo /* ciptr */
);
int TRANS(CloseForCloning)(
XtransConnInfo /* ciptr */
);
int TRANS(IsLocal)(
XtransConnInfo /* ciptr */
);
int TRANS(GetMyAddr)(
XtransConnInfo, /* ciptr */
int *, /* familyp */
int *, /* addrlenp */
Xtransaddr ** /* addrp */
);
int TRANS(GetPeerAddr)(
XtransConnInfo, /* ciptr */
int *, /* familyp */
int *, /* addrlenp */
Xtransaddr ** /* addrp */
);
int TRANS(GetConnectionNumber)(
XtransConnInfo /* ciptr */
);
#ifdef TRANS_SERVER
int TRANS(MakeAllCOTSServerListeners)(
const char *, /* port */
int *, /* partial */
int *, /* count_ret */
XtransConnInfo ** /* ciptrs_ret */
);
int TRANS(MakeAllCLTSServerListeners)(
const char *, /* port */
int *, /* partial */
int *, /* count_ret */
XtransConnInfo ** /* ciptrs_ret */
);
#endif /* TRANS_SERVER */
/*
* Function Prototypes for Utility Functions.
*/
#ifdef X11_t
int TRANS(ConvertAddress)(
int *, /* familyp */
int *, /* addrlenp */
Xtransaddr ** /* addrp */
);
#endif /* X11_t */
#ifdef ICE_t
char *
TRANS(GetMyNetworkId)(
XtransConnInfo /* ciptr */
);
char *
TRANS(GetPeerNetworkId)(
XtransConnInfo /* ciptr */
);
#endif /* ICE_t */
int
TRANS(GetHostname) (
char * /* buf */,
int /* maxlen */
);
#if defined(WIN32) && defined(TCPCONN)
int TRANS(WSAStartup)();
#endif
#endif /* _XTRANS_H_ */

View File

@ -0,0 +1,464 @@
/*
Copyright 1993, 1994, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall
not be used in advertising or otherwise to promote the sale, use or
other dealings in this Software without prior written authorization
from The Open Group.
* Copyright 1993, 1994 NCR Corporation - Dayton, Ohio, USA
*
* All Rights Reserved
*
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted, provided
* that the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name NCR not be used in advertising
* or publicity pertaining to distribution of the software without specific,
* written prior permission. NCR makes no representations about the
* suitability of this software for any purpose. It is provided "as is"
* without express or implied warranty.
*
* NCR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
* NO EVENT SHALL NCR BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef _XTRANSINT_H_
#define _XTRANSINT_H_
/*
* XTRANSDEBUG will enable the PRMSG() macros used in the X Transport
* Interface code. Each use of the PRMSG macro has a level associated with
* it. XTRANSDEBUG is defined to be a level. If the invocation level is =<
* the value of XTRANSDEBUG, then the message will be printed out to stderr.
* Recommended levels are:
*
* XTRANSDEBUG=1 Error messages
* XTRANSDEBUG=2 API Function Tracing
* XTRANSDEBUG=3 All Function Tracing
* XTRANSDEBUG=4 printing of intermediate values
* XTRANSDEBUG=5 really detailed stuff
#define XTRANSDEBUG 2
*
* Defining XTRANSDEBUGTIMESTAMP will cause printing timestamps with each
* message.
*/
#if !defined(XTRANSDEBUG) && defined(XTRANS_TRANSPORT_C)
# define XTRANSDEBUG 1
#endif
#ifdef WIN32
# define _WILLWINSOCK_
#endif
#include "Xtrans.h"
#ifndef _X_UNUSED /* Defined in Xfuncproto.h in xproto >= 7.0.22 */
# define _X_UNUSED /* */
#endif
#ifdef XTRANSDEBUG
# include <stdio.h>
#endif /* XTRANSDEBUG */
#include <errno.h>
#ifndef WIN32
# include <sys/socket.h>
# include <netinet/in.h>
# include <arpa/inet.h>
/*
* Moved the setting of NEED_UTSNAME to this header file from Xtrans.c,
* to avoid a race condition. JKJ (6/5/97)
*/
# if defined(_POSIX_SOURCE) || defined(USG) || defined(SVR4) || defined(__SVR4) || defined(__SCO__)
# ifndef NEED_UTSNAME
# define NEED_UTSNAME
# endif
# include <sys/utsname.h>
# endif
# define ESET(val) errno = val
# define EGET() errno
#else /* WIN32 */
# include <limits.h> /* for USHRT_MAX */
# define ESET(val) WSASetLastError(val)
# define EGET() WSAGetLastError()
#endif /* WIN32 */
#include <stddef.h>
#ifdef X11_t
#define X_TCP_PORT 6000
#endif
#if XTRANS_SEND_FDS
struct _XtransConnFd {
struct _XtransConnFd *next;
int fd;
int do_close;
};
#endif
struct _XtransConnInfo {
struct _Xtransport *transptr;
int index;
char *priv;
int flags;
int fd;
char *port;
int family;
char *addr;
int addrlen;
char *peeraddr;
int peeraddrlen;
struct _XtransConnFd *recv_fds;
struct _XtransConnFd *send_fds;
};
#define XTRANS_OPEN_COTS_CLIENT 1
#define XTRANS_OPEN_COTS_SERVER 2
#define XTRANS_OPEN_CLTS_CLIENT 3
#define XTRANS_OPEN_CLTS_SERVER 4
typedef struct _Xtransport {
const char *TransName;
int flags;
#ifdef TRANS_CLIENT
XtransConnInfo (*OpenCOTSClient)(
struct _Xtransport *, /* transport */
const char *, /* protocol */
const char *, /* host */
const char * /* port */
);
#endif /* TRANS_CLIENT */
#ifdef TRANS_SERVER
const char ** nolisten;
XtransConnInfo (*OpenCOTSServer)(
struct _Xtransport *, /* transport */
const char *, /* protocol */
const char *, /* host */
const char * /* port */
);
#endif /* TRANS_SERVER */
#ifdef TRANS_CLIENT
XtransConnInfo (*OpenCLTSClient)(
struct _Xtransport *, /* transport */
const char *, /* protocol */
const char *, /* host */
const char * /* port */
);
#endif /* TRANS_CLIENT */
#ifdef TRANS_SERVER
XtransConnInfo (*OpenCLTSServer)(
struct _Xtransport *, /* transport */
const char *, /* protocol */
const char *, /* host */
const char * /* port */
);
#endif /* TRANS_SERVER */
#ifdef TRANS_REOPEN
XtransConnInfo (*ReopenCOTSServer)(
struct _Xtransport *, /* transport */
int, /* fd */
const char * /* port */
);
XtransConnInfo (*ReopenCLTSServer)(
struct _Xtransport *, /* transport */
int, /* fd */
const char * /* port */
);
#endif /* TRANS_REOPEN */
int (*SetOption)(
XtransConnInfo, /* connection */
int, /* option */
int /* arg */
);
#ifdef TRANS_SERVER
/* Flags */
# define ADDR_IN_USE_ALLOWED 1
int (*CreateListener)(
XtransConnInfo, /* connection */
const char *, /* port */
unsigned int /* flags */
);
int (*ResetListener)(
XtransConnInfo /* connection */
);
XtransConnInfo (*Accept)(
XtransConnInfo, /* connection */
int * /* status */
);
#endif /* TRANS_SERVER */
#ifdef TRANS_CLIENT
int (*Connect)(
XtransConnInfo, /* connection */
const char *, /* host */
const char * /* port */
);
#endif /* TRANS_CLIENT */
int (*BytesReadable)(
XtransConnInfo, /* connection */
BytesReadable_t * /* pend */
);
int (*Read)(
XtransConnInfo, /* connection */
char *, /* buf */
int /* size */
);
int (*Write)(
XtransConnInfo, /* connection */
char *, /* buf */
int /* size */
);
int (*Readv)(
XtransConnInfo, /* connection */
struct iovec *, /* buf */
int /* size */
);
int (*Writev)(
XtransConnInfo, /* connection */
struct iovec *, /* buf */
int /* size */
);
#if XTRANS_SEND_FDS
int (*SendFd)(
XtransConnInfo, /* connection */
int, /* fd */
int /* do_close */
);
int (*RecvFd)(
XtransConnInfo /* connection */
);
#endif
int (*Disconnect)(
XtransConnInfo /* connection */
);
int (*Close)(
XtransConnInfo /* connection */
);
int (*CloseForCloning)(
XtransConnInfo /* connection */
);
} Xtransport;
typedef struct _Xtransport_table {
Xtransport *transport;
int transport_id;
} Xtransport_table;
/*
* Flags for the flags member of Xtransport.
*/
#define TRANS_ALIAS (1<<0) /* record is an alias, don't create server */
#define TRANS_LOCAL (1<<1) /* local transport */
#define TRANS_DISABLED (1<<2) /* Don't open this one */
#define TRANS_NOLISTEN (1<<3) /* Don't listen on this one */
#define TRANS_NOUNLINK (1<<4) /* Don't unlink transport endpoints */
#define TRANS_ABSTRACT (1<<5) /* Use abstract sockets if available */
#define TRANS_NOXAUTH (1<<6) /* Don't verify authentication (because it's secure some other way at the OS layer) */
#define TRANS_RECEIVED (1<<7) /* The fd for this has already been opened by someone else. */
/* Flags to preserve when setting others */
#define TRANS_KEEPFLAGS (TRANS_NOUNLINK|TRANS_ABSTRACT)
#ifdef XTRANS_TRANSPORT_C /* only provide static function prototypes when
building the transport.c file that has them in */
#ifdef __clang__
/* Not all clients make use of all provided statics */
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-function"
#endif
/*
* readv() and writev() don't exist or don't work correctly on some
* systems, so they may be emulated.
*/
#if defined(SYSV) && defined(__i386__) && !defined(__SCO__) && !defined(sun) || defined(WIN32)
#define READV(ciptr, iov, iovcnt) TRANS(ReadV)(ciptr, iov, iovcnt)
static int TRANS(ReadV)(
XtransConnInfo, /* ciptr */
struct iovec *, /* iov */
int /* iovcnt */
);
#else
#define READV(ciptr, iov, iovcnt) readv(ciptr->fd, iov, iovcnt)
#endif /* CRAY || (SYSV && __i386__) || WIN32 || __sxg__ || */
#if defined(SYSV) && defined(__i386__) && !defined(__SCO__) && !defined(sun) || defined(WIN32)
#define WRITEV(ciptr, iov, iovcnt) TRANS(WriteV)(ciptr, iov, iovcnt)
static int TRANS(WriteV)(
XtransConnInfo, /* ciptr */
struct iovec *, /* iov */
int /* iovcnt */
);
#else
#define WRITEV(ciptr, iov, iovcnt) writev(ciptr->fd, iov, iovcnt)
#endif /* CRAY || WIN32 || __sxg__ */
static int is_numeric (
const char * /* str */
);
#ifdef TRANS_SERVER
static int trans_mkdir (
const char *, /* path */
int /* mode */
);
#endif
#ifdef __clang__
#pragma clang diagnostic pop
#endif
/*
* Some XTRANSDEBUG stuff
*/
#ifdef XTRANSDEBUG
#include <stdarg.h>
/*
* The X server provides ErrorF() & VErrorF(), for other software that uses
* xtrans, we provide our own simple versions.
*/
# if defined(XSERV_t) && defined(TRANS_SERVER)
# include "os.h"
# else
static inline void _X_ATTRIBUTE_PRINTF(1, 0)
VErrorF(const char *f, va_list args)
{
vfprintf(stderr, f, args);
fflush(stderr);
}
static inline void _X_ATTRIBUTE_PRINTF(1, 2)
ErrorF(const char *f, ...)
{
va_list args;
va_start(args, f);
VErrorF(f, args);
va_end(args);
}
# endif /* xserver */
#endif /* XTRANSDEBUG */
static inline void _X_ATTRIBUTE_PRINTF(2, 3)
prmsg(int lvl, const char *f, ...)
{
#ifdef XTRANSDEBUG
va_list args;
va_start(args, f);
if (lvl <= XTRANSDEBUG) {
int saveerrno = errno;
ErrorF("%s", __xtransname);
VErrorF(f, args);
# ifdef XTRANSDEBUGTIMESTAMP
{
struct timeval tp;
gettimeofday(&tp, 0);
ErrorF("timestamp (ms): %d\n",
tp.tv_sec * 1000 + tp.tv_usec / 1000);
}
# endif
errno = saveerrno;
}
va_end(args);
#endif /* XTRANSDEBUG */
}
#endif /* XTRANS_TRANSPORT_C */
#endif /* _XTRANSINT_H_ */

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,637 @@
/*
Copyright 1993, 1994, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall
not be used in advertising or otherwise to promote the sale, use or
other dealings in this Software without prior written authorization
from The Open Group.
* Copyright 1993, 1994 NCR Corporation - Dayton, Ohio, USA
*
* All Rights Reserved
*
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted, provided
* that the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name NCR not be used in advertising
* or publicity pertaining to distribution of the software without specific,
* written prior permission. NCR makes no representations about the
* suitability of this software for any purpose. It is provided "as is"
* without express or implied warranty.
*
* NCRS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
* NO EVENT SHALL NCR BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*
* These are some utility functions created for convenience or to provide
* an interface that is similar to an existing interface. These are built
* only using the Transport Independant API, and have no knowledge of
* the internal implementation.
*/
#ifdef XTHREADS
#include <X11/Xthreads.h>
#endif
#ifdef WIN32
#include <X11/Xlibint.h>
#include <X11/Xwinsock.h>
#endif
#ifdef X11_t
/*
* These values come from X.h and Xauth.h, and MUST match them. Some
* of these values are also defined by the ChangeHost protocol message.
*/
#define FamilyInternet 0 /* IPv4 */
#define FamilyDECnet 1
#define FamilyChaos 2
#define FamilyInternet6 6
#define FamilyAmoeba 33
#define FamilyLocalHost 252
#define FamilyKrb5Principal 253
#define FamilyNetname 254
#define FamilyLocal 256
#define FamilyWild 65535
/*
* TRANS(ConvertAddress) converts a sockaddr based address to an
* X authorization based address. Some of this is defined as part of
* the ChangeHost protocol. The rest is just done in a consistent manner.
*/
int
TRANS(ConvertAddress)(int *familyp, int *addrlenp, Xtransaddr **addrp)
{
prmsg(2,"ConvertAddress(%d,%d,%p)\n",*familyp,*addrlenp,*addrp);
switch( *familyp )
{
#if defined(TCPCONN)
case AF_INET:
{
/*
* Check for the BSD hack localhost address 127.0.0.1.
* In this case, we are really FamilyLocal.
*/
struct sockaddr_in saddr;
int len = sizeof(saddr.sin_addr.s_addr);
char *cp = (char *) &saddr.sin_addr.s_addr;
memcpy (&saddr, *addrp, sizeof (struct sockaddr_in));
if ((len == 4) && (cp[0] == 127) && (cp[1] == 0) &&
(cp[2] == 0) && (cp[3] == 1))
{
*familyp=FamilyLocal;
}
else
{
*familyp=FamilyInternet;
*addrlenp=len;
memcpy(*addrp,&saddr.sin_addr,len);
}
break;
}
#if defined(IPv6) && defined(AF_INET6)
case AF_INET6:
{
struct sockaddr_in6 saddr6;
memcpy (&saddr6, *addrp, sizeof (struct sockaddr_in6));
if (IN6_IS_ADDR_LOOPBACK(&saddr6.sin6_addr))
{
*familyp=FamilyLocal;
}
else if (IN6_IS_ADDR_V4MAPPED(&(saddr6.sin6_addr))) {
char *cp = (char *) &saddr6.sin6_addr.s6_addr[12];
if ((cp[0] == 127) && (cp[1] == 0) &&
(cp[2] == 0) && (cp[3] == 1))
{
*familyp=FamilyLocal;
}
else
{
*familyp=FamilyInternet;
*addrlenp = sizeof (struct in_addr);
memcpy(*addrp,cp,*addrlenp);
}
}
else
{
*familyp=FamilyInternet6;
*addrlenp=sizeof(saddr6.sin6_addr);
memcpy(*addrp,&saddr6.sin6_addr,sizeof(saddr6.sin6_addr));
}
break;
}
#endif /* IPv6 */
#endif /* defined(TCPCONN) */
#if defined(UNIXCONN) || defined(LOCALCONN)
case AF_UNIX:
{
*familyp=FamilyLocal;
break;
}
#endif /* defined(UNIXCONN) || defined(LOCALCONN) */
#if (defined(__SCO__) || defined(__UNIXWARE__)) && defined(LOCALCONN)
case 0:
{
*familyp=FamilyLocal;
break;
}
#endif
default:
prmsg(1,"ConvertAddress: Unknown family type %d\n",
*familyp);
return -1;
}
if (*familyp == FamilyLocal)
{
/*
* In the case of a local connection, we need to get the
* host name for authentication.
*/
char hostnamebuf[256];
int len = TRANS(GetHostname) (hostnamebuf, sizeof hostnamebuf);
if (len > 0) {
if (*addrp && *addrlenp < (len + 1))
{
free (*addrp);
*addrp = NULL;
}
if (!*addrp)
*addrp = malloc (len + 1);
if (*addrp) {
strcpy ((char *) *addrp, hostnamebuf);
*addrlenp = len;
} else {
*addrlenp = 0;
}
}
else
{
if (*addrp)
free (*addrp);
*addrp = NULL;
*addrlenp = 0;
}
}
return 0;
}
#endif /* X11_t */
#ifdef ICE_t
/* Needed for _XGethostbyaddr usage in TRANS(GetPeerNetworkId) */
# if defined(TCPCONN) || defined(UNIXCONN)
# define X_INCLUDE_NETDB_H
# define XOS_USE_NO_LOCKING
# include <X11/Xos_r.h>
# endif
#include <signal.h>
char *
TRANS(GetMyNetworkId) (XtransConnInfo ciptr)
{
int family = ciptr->family;
char *addr = ciptr->addr;
char hostnamebuf[256];
char *networkId = NULL;
const char *transName = ciptr->transptr->TransName;
if (gethostname (hostnamebuf, sizeof (hostnamebuf)) < 0)
{
return (NULL);
}
switch (family)
{
#if defined(UNIXCONN) || defined(LOCALCONN)
case AF_UNIX:
{
struct sockaddr_un *saddr = (struct sockaddr_un *) addr;
networkId = malloc (3 + strlen (transName) +
strlen (hostnamebuf) + strlen (saddr->sun_path));
sprintf (networkId, "%s/%s:%s", transName,
hostnamebuf, saddr->sun_path);
break;
}
#endif /* defined(UNIXCONN) || defined(LOCALCONN) */
#if defined(TCPCONN)
case AF_INET:
#if defined(IPv6) && defined(AF_INET6)
case AF_INET6:
#endif
{
struct sockaddr_in *saddr = (struct sockaddr_in *) addr;
#if defined(IPv6) && defined(AF_INET6)
struct sockaddr_in6 *saddr6 = (struct sockaddr_in6 *) addr;
#endif
int portnum;
char portnumbuf[10];
#if defined(IPv6) && defined(AF_INET6)
if (family == AF_INET6)
portnum = ntohs (saddr6->sin6_port);
else
#endif
portnum = ntohs (saddr->sin_port);
snprintf (portnumbuf, sizeof(portnumbuf), "%d", portnum);
networkId = malloc (3 + strlen (transName) +
strlen (hostnamebuf) + strlen (portnumbuf));
sprintf (networkId, "%s/%s:%s", transName, hostnamebuf, portnumbuf);
break;
}
#endif /* defined(TCPCONN) */
default:
break;
}
return (networkId);
}
#include <setjmp.h>
static jmp_buf env;
#ifdef SIGALRM
static volatile int nameserver_timedout = 0;
static void
nameserver_lost(int sig _X_UNUSED)
{
nameserver_timedout = 1;
longjmp (env, -1);
/* NOTREACHED */
}
#endif /* SIGALARM */
char *
TRANS(GetPeerNetworkId) (XtransConnInfo ciptr)
{
int family = ciptr->family;
char *peer_addr = ciptr->peeraddr;
char *hostname;
char addrbuf[256];
const char *addr = NULL;
switch (family)
{
case AF_UNSPEC:
#if defined(UNIXCONN) || defined(LOCALCONN)
case AF_UNIX:
{
if (gethostname (addrbuf, sizeof (addrbuf)) == 0)
addr = addrbuf;
break;
}
#endif /* defined(UNIXCONN) || defined(LOCALCONN) */
#if defined(TCPCONN)
case AF_INET:
#if defined(IPv6) && defined(AF_INET6)
case AF_INET6:
#endif
{
struct sockaddr_in *saddr = (struct sockaddr_in *) peer_addr;
#if defined(IPv6) && defined(AF_INET6)
struct sockaddr_in6 *saddr6 = (struct sockaddr_in6 *) peer_addr;
#endif
char *address;
int addresslen;
#ifdef XTHREADS_NEEDS_BYNAMEPARAMS
_Xgethostbynameparams hparams;
#endif
struct hostent * volatile hostp = NULL;
#if defined(IPv6) && defined(AF_INET6)
if (family == AF_INET6)
{
address = (char *) &saddr6->sin6_addr;
addresslen = sizeof (saddr6->sin6_addr);
}
else
#endif
{
address = (char *) &saddr->sin_addr;
addresslen = sizeof (saddr->sin_addr);
}
#ifdef SIGALRM
/*
* gethostbyaddr can take a LONG time if the host does not exist.
* Assume that if it does not respond in NAMESERVER_TIMEOUT seconds
* that something is wrong and do not make the user wait.
* gethostbyaddr will continue after a signal, so we have to
* jump out of it.
*/
nameserver_timedout = 0;
signal (SIGALRM, nameserver_lost);
alarm (4);
if (setjmp(env) == 0) {
#endif
hostp = _XGethostbyaddr (address, addresslen, family, hparams);
#ifdef SIGALRM
}
alarm (0);
#endif
if (hostp != NULL)
addr = hostp->h_name;
else
#if defined(IPv6) && defined(AF_INET6)
addr = inet_ntop (family, address, addrbuf, sizeof (addrbuf));
#else
addr = inet_ntoa (saddr->sin_addr);
#endif
break;
}
#endif /* defined(TCPCONN) */
default:
return (NULL);
}
hostname = malloc (strlen (ciptr->transptr->TransName) + strlen (addr) + 2);
strcpy (hostname, ciptr->transptr->TransName);
strcat (hostname, "/");
if (addr)
strcat (hostname, addr);
return (hostname);
}
#endif /* ICE_t */
#if defined(WIN32) && defined(TCPCONN)
int
TRANS(WSAStartup) (void)
{
static WSADATA wsadata;
prmsg (2,"WSAStartup()\n");
if (!wsadata.wVersion && WSAStartup(MAKEWORD(2,2), &wsadata))
return 1;
return 0;
}
#endif
#include <ctype.h>
static int
is_numeric (const char *str)
{
int i;
for (i = 0; i < (int) strlen (str); i++)
if (!isdigit (str[i]))
return (0);
return (1);
}
#ifdef TRANS_SERVER
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#if !defined(S_IFLNK) && !defined(S_ISLNK)
#undef lstat
#define lstat(a,b) stat(a,b)
#endif
#define FAIL_IF_NOMODE 1
#define FAIL_IF_NOT_ROOT 2
#define WARN_NO_ACCESS 4
/*
* We make the assumption that when the 'sticky' (t) bit is requested
* it's not save if the directory has non-root ownership or the sticky
* bit cannot be set and fail.
*/
static int
trans_mkdir(const char *path, int mode)
{
struct stat buf;
if (lstat(path, &buf) != 0) {
if (errno != ENOENT) {
prmsg(1, "mkdir: ERROR: (l)stat failed for %s (%d)\n",
path, errno);
return -1;
}
/* Dir doesn't exist. Try to create it */
#if !defined(WIN32) && !defined(__CYGWIN__)
/*
* 'sticky' bit requested: assume application makes
* certain security implications. If effective user ID
* is != 0: fail as we may not be able to meet them.
*/
if (geteuid() != 0) {
if (mode & 01000) {
prmsg(1, "mkdir: ERROR: euid != 0,"
"directory %s will not be created.\n",
path);
#ifdef FAIL_HARD
return -1;
#endif
} else {
prmsg(1, "mkdir: Cannot create %s with root ownership\n",
path);
}
}
#endif
#ifndef WIN32
if (mkdir(path, mode) == 0) {
if (chmod(path, mode)) {
prmsg(1, "mkdir: ERROR: Mode of %s should be set to %04o\n",
path, mode);
#ifdef FAIL_HARD
return -1;
#endif
}
#else
if (mkdir(path) == 0) {
#endif
} else {
prmsg(1, "mkdir: ERROR: Cannot create %s\n",
path);
return -1;
}
return 0;
} else {
if (S_ISDIR(buf.st_mode)) {
int updateOwner = 0;
int updateMode = 0;
int updatedOwner = 0;
int updatedMode = 0;
int status = 0;
/* Check if the directory's ownership is OK. */
if (buf.st_uid != 0)
updateOwner = 1;
/*
* Check if the directory's mode is OK. An exact match isn't
* required, just a mode that isn't more permissive than the
* one requested.
*/
if ((~mode) & 0077 & buf.st_mode)
updateMode = 1;
/*
* If the directory is not writeable not everybody may
* be able to create sockets. Therefore warn if mode
* cannot be fixed.
*/
if ((~buf.st_mode) & 0022 & mode) {
updateMode = 1;
status |= WARN_NO_ACCESS;
}
/*
* If 'sticky' bit is requested fail if owner isn't root
* as we assume the caller makes certain security implications
*/
if (mode & 01000) {
status |= FAIL_IF_NOT_ROOT;
if (!(buf.st_mode & 01000)) {
status |= FAIL_IF_NOMODE;
updateMode = 1;
}
}
#ifdef HAS_FCHOWN
/*
* If fchown(2) and fchmod(2) are available, try to correct the
* directory's owner and mode. Otherwise it isn't safe to attempt
* to do this.
*/
if (updateMode || updateOwner) {
int fd = -1;
struct stat fbuf;
if ((fd = open(path, O_RDONLY)) != -1) {
if (fstat(fd, &fbuf) == -1) {
prmsg(1, "mkdir: ERROR: fstat failed for %s (%d)\n",
path, errno);
close(fd);
return -1;
}
/*
* Verify that we've opened the same directory as was
* checked above.
*/
if (!S_ISDIR(fbuf.st_mode) ||
buf.st_dev != fbuf.st_dev ||
buf.st_ino != fbuf.st_ino) {
prmsg(1, "mkdir: ERROR: inode for %s changed\n",
path);
close(fd);
return -1;
}
if (updateOwner && fchown(fd, 0, 0) == 0)
updatedOwner = 1;
if (updateMode && fchmod(fd, mode) == 0)
updatedMode = 1;
close(fd);
}
}
#endif
if (updateOwner && !updatedOwner) {
#ifdef FAIL_HARD
if (status & FAIL_IF_NOT_ROOT) {
prmsg(1, "mkdir: ERROR: Owner of %s must be set to root\n",
path);
return -1;
}
#endif
#if !defined(__APPLE_CC__) && !defined(__CYGWIN__)
prmsg(1, "mkdir: Owner of %s should be set to root\n",
path);
#endif
}
if (updateMode && !updatedMode) {
#ifdef FAIL_HARD
if (status & FAIL_IF_NOMODE) {
prmsg(1, "mkdir: ERROR: Mode of %s must be set to %04o\n",
path, mode);
return -1;
}
#endif
prmsg(1, "mkdir: Mode of %s should be set to %04o\n",
path, mode);
if (status & WARN_NO_ACCESS) {
prmsg(1, "mkdir: this may cause subsequent errors\n");
}
}
return 0;
}
return -1;
}
/* In all other cases, fail */
return -1;
}
#endif /* TRANS_SERVER */

View File

@ -0,0 +1,74 @@
/*
Copyright 1993, 1994, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall
not be used in advertising or otherwise to promote the sale, use or
other dealings in this Software without prior written authorization
from The Open Group.
* Copyright 1993, 1994 NCR Corporation - Dayton, Ohio, USA
*
* All Rights Reserved
*
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted, provided
* that the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name NCR not be used in advertising
* or publicity pertaining to distribution of the software without specific,
* written prior permission. NCR makes no representations about the
* suitability of this software for any purpose. It is provided "as is"
* without express or implied warranty.
*
* NCR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
* NO EVENT SHALL NCR BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#include <stdlib.h>
#define XTRANS_TRANSPORT_C /* used to flag Xtransint.h that it's being used
here, not just #included in another file */
#include "Xtransint.h"
#ifdef __clang__
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wformat-nonliteral"
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
#endif
#ifdef LOCALCONN
#include "Xtranslcl.c"
#endif
#if defined(TCPCONN) || defined(UNIXCONN)
#include "Xtranssock.c"
#endif
#include "Xtrans.c"
#include "Xtransutil.c"
#ifdef __clang__
#pragma clang diagnostic pop
#endif

View File

@ -0,0 +1,838 @@
/***********************************************************
Copyright 1987, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
#ifndef _X11_XUTIL_H_
#define _X11_XUTIL_H_
/* You must include <X11/Xlib.h> before including this file */
#include <X11/Xlib.h>
#include <X11/keysym.h>
/* The Xlib structs are full of implicit padding to properly align members.
We can't clean that up without breaking ABI, so tell clang not to bother
complaining about it. */
#ifdef __clang__
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wpadded"
#endif
/*
* Bitmask returned by XParseGeometry(). Each bit tells if the corresponding
* value (x, y, width, height) was found in the parsed string.
*/
#define NoValue 0x0000
#define XValue 0x0001
#define YValue 0x0002
#define WidthValue 0x0004
#define HeightValue 0x0008
#define AllValues 0x000F
#define XNegative 0x0010
#define YNegative 0x0020
/*
* new version containing base_width, base_height, and win_gravity fields;
* used with WM_NORMAL_HINTS.
*/
typedef struct {
long flags; /* marks which fields in this structure are defined */
int x, y; /* obsolete for new window mgrs, but clients */
int width, height; /* should set so old wm's don't mess up */
int min_width, min_height;
int max_width, max_height;
int width_inc, height_inc;
struct {
int x; /* numerator */
int y; /* denominator */
} min_aspect, max_aspect;
int base_width, base_height; /* added by ICCCM version 1 */
int win_gravity; /* added by ICCCM version 1 */
} XSizeHints;
/*
* The next block of definitions are for window manager properties that
* clients and applications use for communication.
*/
/* flags argument in size hints */
#define USPosition (1L << 0) /* user specified x, y */
#define USSize (1L << 1) /* user specified width, height */
#define PPosition (1L << 2) /* program specified position */
#define PSize (1L << 3) /* program specified size */
#define PMinSize (1L << 4) /* program specified minimum size */
#define PMaxSize (1L << 5) /* program specified maximum size */
#define PResizeInc (1L << 6) /* program specified resize increments */
#define PAspect (1L << 7) /* program specified min and max aspect ratios */
#define PBaseSize (1L << 8) /* program specified base for incrementing */
#define PWinGravity (1L << 9) /* program specified window gravity */
/* obsolete */
#define PAllHints (PPosition|PSize|PMinSize|PMaxSize|PResizeInc|PAspect)
typedef struct {
long flags; /* marks which fields in this structure are defined */
Bool input; /* does this application rely on the window manager to
get keyboard input? */
int initial_state; /* see below */
Pixmap icon_pixmap; /* pixmap to be used as icon */
Window icon_window; /* window to be used as icon */
int icon_x, icon_y; /* initial position of icon */
Pixmap icon_mask; /* icon mask bitmap */
XID window_group; /* id of related window group */
/* this structure may be extended in the future */
} XWMHints;
/* definition for flags of XWMHints */
#define InputHint (1L << 0)
#define StateHint (1L << 1)
#define IconPixmapHint (1L << 2)
#define IconWindowHint (1L << 3)
#define IconPositionHint (1L << 4)
#define IconMaskHint (1L << 5)
#define WindowGroupHint (1L << 6)
#define AllHints (InputHint|StateHint|IconPixmapHint|IconWindowHint| \
IconPositionHint|IconMaskHint|WindowGroupHint)
#define XUrgencyHint (1L << 8)
/* definitions for initial window state */
#define WithdrawnState 0 /* for windows that are not mapped */
#define NormalState 1 /* most applications want to start this way */
#define IconicState 3 /* application wants to start as an icon */
/*
* Obsolete states no longer defined by ICCCM
*/
#define DontCareState 0 /* don't know or care */
#define ZoomState 2 /* application wants to start zoomed */
#define InactiveState 4 /* application believes it is seldom used; */
/* some wm's may put it on inactive menu */
/*
* new structure for manipulating TEXT properties; used with WM_NAME,
* WM_ICON_NAME, WM_CLIENT_MACHINE, and WM_COMMAND.
*/
typedef struct {
unsigned char *value; /* same as Property routines */
Atom encoding; /* prop type */
int format; /* prop data format: 8, 16, or 32 */
unsigned long nitems; /* number of data items in value */
} XTextProperty;
#define XNoMemory -1
#define XLocaleNotSupported -2
#define XConverterNotFound -3
typedef enum {
XStringStyle, /* STRING */
XCompoundTextStyle, /* COMPOUND_TEXT */
XTextStyle, /* text in owner's encoding (current locale)*/
XStdICCTextStyle, /* STRING, else COMPOUND_TEXT */
/* The following is an XFree86 extension, introduced in November 2000 */
XUTF8StringStyle /* UTF8_STRING */
} XICCEncodingStyle;
typedef struct {
int min_width, min_height;
int max_width, max_height;
int width_inc, height_inc;
} XIconSize;
typedef struct {
char *res_name;
char *res_class;
} XClassHint;
#ifdef XUTIL_DEFINE_FUNCTIONS
extern int XDestroyImage(
XImage *ximage);
extern unsigned long XGetPixel(
XImage *ximage,
int x, int y);
extern int XPutPixel(
XImage *ximage,
int x, int y,
unsigned long pixel);
extern XImage *XSubImage(
XImage *ximage,
int x, int y,
unsigned int width, unsigned int height);
extern int XAddPixel(
XImage *ximage,
long value);
#else
/*
* These macros are used to give some sugar to the image routines so that
* naive people are more comfortable with them.
*/
#define XDestroyImage(ximage) \
((*((ximage)->f.destroy_image))((ximage)))
#define XGetPixel(ximage, x, y) \
((*((ximage)->f.get_pixel))((ximage), (x), (y)))
#define XPutPixel(ximage, x, y, pixel) \
((*((ximage)->f.put_pixel))((ximage), (x), (y), (pixel)))
#define XSubImage(ximage, x, y, width, height) \
((*((ximage)->f.sub_image))((ximage), (x), (y), (width), (height)))
#define XAddPixel(ximage, value) \
((*((ximage)->f.add_pixel))((ximage), (value)))
#endif
/*
* Compose sequence status structure, used in calling XLookupString.
*/
typedef struct _XComposeStatus {
XPointer compose_ptr; /* state table pointer */
int chars_matched; /* match state */
} XComposeStatus;
/*
* Keysym macros, used on Keysyms to test for classes of symbols
*/
#define IsKeypadKey(keysym) \
(((KeySym)(keysym) >= XK_KP_Space) && ((KeySym)(keysym) <= XK_KP_Equal))
#define IsPrivateKeypadKey(keysym) \
(((KeySym)(keysym) >= 0x11000000) && ((KeySym)(keysym) <= 0x1100FFFF))
#define IsCursorKey(keysym) \
(((KeySym)(keysym) >= XK_Home) && ((KeySym)(keysym) < XK_Select))
#define IsPFKey(keysym) \
(((KeySym)(keysym) >= XK_KP_F1) && ((KeySym)(keysym) <= XK_KP_F4))
#define IsFunctionKey(keysym) \
(((KeySym)(keysym) >= XK_F1) && ((KeySym)(keysym) <= XK_F35))
#define IsMiscFunctionKey(keysym) \
(((KeySym)(keysym) >= XK_Select) && ((KeySym)(keysym) <= XK_Break))
#ifdef XK_XKB_KEYS
#define IsModifierKey(keysym) \
((((KeySym)(keysym) >= XK_Shift_L) && ((KeySym)(keysym) <= XK_Hyper_R)) \
|| (((KeySym)(keysym) >= XK_ISO_Lock) && \
((KeySym)(keysym) <= XK_ISO_Level5_Lock)) \
|| ((KeySym)(keysym) == XK_Mode_switch) \
|| ((KeySym)(keysym) == XK_Num_Lock))
#else
#define IsModifierKey(keysym) \
((((KeySym)(keysym) >= XK_Shift_L) && ((KeySym)(keysym) <= XK_Hyper_R)) \
|| ((KeySym)(keysym) == XK_Mode_switch) \
|| ((KeySym)(keysym) == XK_Num_Lock))
#endif
/*
* opaque reference to Region data type
*/
typedef struct _XRegion *Region;
/* Return values from XRectInRegion() */
#define RectangleOut 0
#define RectangleIn 1
#define RectanglePart 2
/*
* Information used by the visual utility routines to find desired visual
* type from the many visuals a display may support.
*/
typedef struct {
Visual *visual;
VisualID visualid;
int screen;
int depth;
#if defined(__cplusplus) || defined(c_plusplus)
int c_class; /* C++ */
#else
int class;
#endif
unsigned long red_mask;
unsigned long green_mask;
unsigned long blue_mask;
int colormap_size;
int bits_per_rgb;
} XVisualInfo;
#define VisualNoMask 0x0
#define VisualIDMask 0x1
#define VisualScreenMask 0x2
#define VisualDepthMask 0x4
#define VisualClassMask 0x8
#define VisualRedMaskMask 0x10
#define VisualGreenMaskMask 0x20
#define VisualBlueMaskMask 0x40
#define VisualColormapSizeMask 0x80
#define VisualBitsPerRGBMask 0x100
#define VisualAllMask 0x1FF
/*
* This defines a window manager property that clients may use to
* share standard color maps of type RGB_COLOR_MAP:
*/
typedef struct {
Colormap colormap;
unsigned long red_max;
unsigned long red_mult;
unsigned long green_max;
unsigned long green_mult;
unsigned long blue_max;
unsigned long blue_mult;
unsigned long base_pixel;
VisualID visualid; /* added by ICCCM version 1 */
XID killid; /* added by ICCCM version 1 */
} XStandardColormap;
#define ReleaseByFreeingColormap ((XID) 1L) /* for killid field above */
/*
* return codes for XReadBitmapFile and XWriteBitmapFile
*/
#define BitmapSuccess 0
#define BitmapOpenFailed 1
#define BitmapFileInvalid 2
#define BitmapNoMemory 3
/****************************************************************
*
* Context Management
*
****************************************************************/
/* Associative lookup table return codes */
#define XCSUCCESS 0 /* No error. */
#define XCNOMEM 1 /* Out of memory */
#define XCNOENT 2 /* No entry in table */
typedef int XContext;
#define XUniqueContext() ((XContext) XrmUniqueQuark())
#define XStringToContext(string) ((XContext) XrmStringToQuark(string))
_XFUNCPROTOBEGIN
/* The following declarations are alphabetized. */
extern XClassHint *XAllocClassHint (
void
);
extern XIconSize *XAllocIconSize (
void
);
extern XSizeHints *XAllocSizeHints (
void
);
extern XStandardColormap *XAllocStandardColormap (
void
);
extern XWMHints *XAllocWMHints (
void
);
extern int XClipBox(
Region /* r */,
XRectangle* /* rect_return */
);
extern Region XCreateRegion(
void
);
extern const char *XDefaultString (void);
extern int XDeleteContext(
Display* /* display */,
XID /* rid */,
XContext /* context */
);
extern int XDestroyRegion(
Region /* r */
);
extern int XEmptyRegion(
Region /* r */
);
extern int XEqualRegion(
Region /* r1 */,
Region /* r2 */
);
extern int XFindContext(
Display* /* display */,
XID /* rid */,
XContext /* context */,
XPointer* /* data_return */
);
extern Status XGetClassHint(
Display* /* display */,
Window /* w */,
XClassHint* /* class_hints_return */
);
extern Status XGetIconSizes(
Display* /* display */,
Window /* w */,
XIconSize** /* size_list_return */,
int* /* count_return */
);
extern Status XGetNormalHints(
Display* /* display */,
Window /* w */,
XSizeHints* /* hints_return */
);
extern Status XGetRGBColormaps(
Display* /* display */,
Window /* w */,
XStandardColormap** /* stdcmap_return */,
int* /* count_return */,
Atom /* property */
);
extern Status XGetSizeHints(
Display* /* display */,
Window /* w */,
XSizeHints* /* hints_return */,
Atom /* property */
);
extern Status XGetStandardColormap(
Display* /* display */,
Window /* w */,
XStandardColormap* /* colormap_return */,
Atom /* property */
);
extern Status XGetTextProperty(
Display* /* display */,
Window /* window */,
XTextProperty* /* text_prop_return */,
Atom /* property */
);
extern XVisualInfo *XGetVisualInfo(
Display* /* display */,
long /* vinfo_mask */,
XVisualInfo* /* vinfo_template */,
int* /* nitems_return */
);
extern Status XGetWMClientMachine(
Display* /* display */,
Window /* w */,
XTextProperty* /* text_prop_return */
);
extern XWMHints *XGetWMHints(
Display* /* display */,
Window /* w */
);
extern Status XGetWMIconName(
Display* /* display */,
Window /* w */,
XTextProperty* /* text_prop_return */
);
extern Status XGetWMName(
Display* /* display */,
Window /* w */,
XTextProperty* /* text_prop_return */
);
extern Status XGetWMNormalHints(
Display* /* display */,
Window /* w */,
XSizeHints* /* hints_return */,
long* /* supplied_return */
);
extern Status XGetWMSizeHints(
Display* /* display */,
Window /* w */,
XSizeHints* /* hints_return */,
long* /* supplied_return */,
Atom /* property */
);
extern Status XGetZoomHints(
Display* /* display */,
Window /* w */,
XSizeHints* /* zhints_return */
);
extern int XIntersectRegion(
Region /* sra */,
Region /* srb */,
Region /* dr_return */
);
extern void XConvertCase(
KeySym /* sym */,
KeySym* /* lower */,
KeySym* /* upper */
);
extern int XLookupString(
XKeyEvent* /* event_struct */,
char* /* buffer_return */,
int /* bytes_buffer */,
KeySym* /* keysym_return */,
XComposeStatus* /* status_in_out */
);
extern Status XMatchVisualInfo(
Display* /* display */,
int /* screen */,
int /* depth */,
int /* class */,
XVisualInfo* /* vinfo_return */
);
extern int XOffsetRegion(
Region /* r */,
int /* dx */,
int /* dy */
);
extern Bool XPointInRegion(
Region /* r */,
int /* x */,
int /* y */
);
extern Region XPolygonRegion(
XPoint* /* points */,
int /* n */,
int /* fill_rule */
);
extern int XRectInRegion(
Region /* r */,
int /* x */,
int /* y */,
unsigned int /* width */,
unsigned int /* height */
);
extern int XSaveContext(
Display* /* display */,
XID /* rid */,
XContext /* context */,
_Xconst char* /* data */
);
extern int XSetClassHint(
Display* /* display */,
Window /* w */,
XClassHint* /* class_hints */
);
extern int XSetIconSizes(
Display* /* display */,
Window /* w */,
XIconSize* /* size_list */,
int /* count */
);
extern int XSetNormalHints(
Display* /* display */,
Window /* w */,
XSizeHints* /* hints */
);
extern void XSetRGBColormaps(
Display* /* display */,
Window /* w */,
XStandardColormap* /* stdcmaps */,
int /* count */,
Atom /* property */
);
extern int XSetSizeHints(
Display* /* display */,
Window /* w */,
XSizeHints* /* hints */,
Atom /* property */
);
extern int XSetStandardProperties(
Display* /* display */,
Window /* w */,
_Xconst char* /* window_name */,
_Xconst char* /* icon_name */,
Pixmap /* icon_pixmap */,
char** /* argv */,
int /* argc */,
XSizeHints* /* hints */
);
extern void XSetTextProperty(
Display* /* display */,
Window /* w */,
XTextProperty* /* text_prop */,
Atom /* property */
);
extern void XSetWMClientMachine(
Display* /* display */,
Window /* w */,
XTextProperty* /* text_prop */
);
extern int XSetWMHints(
Display* /* display */,
Window /* w */,
XWMHints* /* wm_hints */
);
extern void XSetWMIconName(
Display* /* display */,
Window /* w */,
XTextProperty* /* text_prop */
);
extern void XSetWMName(
Display* /* display */,
Window /* w */,
XTextProperty* /* text_prop */
);
extern void XSetWMNormalHints(
Display* /* display */,
Window /* w */,
XSizeHints* /* hints */
);
extern void XSetWMProperties(
Display* /* display */,
Window /* w */,
XTextProperty* /* window_name */,
XTextProperty* /* icon_name */,
char** /* argv */,
int /* argc */,
XSizeHints* /* normal_hints */,
XWMHints* /* wm_hints */,
XClassHint* /* class_hints */
);
extern void XmbSetWMProperties(
Display* /* display */,
Window /* w */,
_Xconst char* /* window_name */,
_Xconst char* /* icon_name */,
char** /* argv */,
int /* argc */,
XSizeHints* /* normal_hints */,
XWMHints* /* wm_hints */,
XClassHint* /* class_hints */
);
extern void Xutf8SetWMProperties(
Display* /* display */,
Window /* w */,
_Xconst char* /* window_name */,
_Xconst char* /* icon_name */,
char** /* argv */,
int /* argc */,
XSizeHints* /* normal_hints */,
XWMHints* /* wm_hints */,
XClassHint* /* class_hints */
);
extern void XSetWMSizeHints(
Display* /* display */,
Window /* w */,
XSizeHints* /* hints */,
Atom /* property */
);
extern int XSetRegion(
Display* /* display */,
GC /* gc */,
Region /* r */
);
extern void XSetStandardColormap(
Display* /* display */,
Window /* w */,
XStandardColormap* /* colormap */,
Atom /* property */
);
extern int XSetZoomHints(
Display* /* display */,
Window /* w */,
XSizeHints* /* zhints */
);
extern int XShrinkRegion(
Region /* r */,
int /* dx */,
int /* dy */
);
extern Status XStringListToTextProperty(
char** /* list */,
int /* count */,
XTextProperty* /* text_prop_return */
);
extern int XSubtractRegion(
Region /* sra */,
Region /* srb */,
Region /* dr_return */
);
extern int XmbTextListToTextProperty(
Display* display,
char** list,
int count,
XICCEncodingStyle style,
XTextProperty* text_prop_return
);
extern int XwcTextListToTextProperty(
Display* display,
wchar_t** list,
int count,
XICCEncodingStyle style,
XTextProperty* text_prop_return
);
extern int Xutf8TextListToTextProperty(
Display* display,
char** list,
int count,
XICCEncodingStyle style,
XTextProperty* text_prop_return
);
extern void XwcFreeStringList(
wchar_t** list
);
extern Status XTextPropertyToStringList(
XTextProperty* /* text_prop */,
char*** /* list_return */,
int* /* count_return */
);
extern int XmbTextPropertyToTextList(
Display* display,
const XTextProperty* text_prop,
char*** list_return,
int* count_return
);
extern int XwcTextPropertyToTextList(
Display* display,
const XTextProperty* text_prop,
wchar_t*** list_return,
int* count_return
);
extern int Xutf8TextPropertyToTextList(
Display* display,
const XTextProperty* text_prop,
char*** list_return,
int* count_return
);
extern int XUnionRectWithRegion(
XRectangle* /* rectangle */,
Region /* src_region */,
Region /* dest_region_return */
);
extern int XUnionRegion(
Region /* sra */,
Region /* srb */,
Region /* dr_return */
);
extern int XWMGeometry(
Display* /* display */,
int /* screen_number */,
_Xconst char* /* user_geometry */,
_Xconst char* /* default_geometry */,
unsigned int /* border_width */,
XSizeHints* /* hints */,
int* /* x_return */,
int* /* y_return */,
int* /* width_return */,
int* /* height_return */,
int* /* gravity_return */
);
extern int XXorRegion(
Region /* sra */,
Region /* srb */,
Region /* dr_return */
);
#ifdef __clang__
#pragma clang diagnostic pop
#endif
_XFUNCPROTOEND
#endif /* _X11_XUTIL_H_ */

View File

@ -0,0 +1,79 @@
#ifndef _XW32DEFS_H
# define _XW32DEFS_H
# ifdef __GNUC__ /* mingw is more close to unix than msvc */
# if !defined(__daddr_t_defined)
typedef char *caddr_t;
# endif
# define lstat stat
# else
typedef char *caddr_t;
# define access _access
# define alloca _alloca
# define chdir _chdir
# define chmod _chmod
# define close _close
# define creat _creat
# define dup _dup
# define dup2 _dup2
# define environ _environ
# define execl _execl
# define execle _execle
# define execlp _execlp
# define execlpe _execlpe
# define execv _execv
# define execve _execve
# define execvp _execvp
# define execvpe _execvpe
# define fdopen _fdopen
# define fileno _fileno
# define fstat _fstat
# define getcwd _getcwd
# define getpid _getpid
# define hypot _hypot
# define isascii __isascii
# define isatty _isatty
# define lseek _lseek
# define mkdir _mkdir
# define mktemp _mktemp
# define open _open
# define putenv _putenv
# define read _read
# define rmdir _rmdir
# define sleep(x) Sleep((x) * 1000)
# define stat _stat
# define sys_errlist _sys_errlist
# define sys_nerr _sys_nerr
# define umask _umask
# define unlink _unlink
# define write _write
# define random rand
# define srandom srand
# define O_RDONLY _O_RDONLY
# define O_WRONLY _O_WRONLY
# define O_RDWR _O_RDWR
# define O_APPEND _O_APPEND
# define O_CREAT _O_CREAT
# define O_TRUNC _O_TRUNC
# define O_EXCL _O_EXCL
# define O_TEXT _O_TEXT
# define O_BINARY _O_BINARY
# define O_RAW _O_BINARY
# define S_IFMT _S_IFMT
# define S_IFDIR _S_IFDIR
# define S_IFCHR _S_IFCHR
# define S_IFREG _S_IFREG
# define S_IREAD _S_IREAD
# define S_IWRITE _S_IWRITE
# define S_IEXEC _S_IEXEC
# define F_OK 0
# define X_OK 1
# define W_OK 2
# define R_OK 4
# endif /* __GNUC__ */
#endif

Some files were not shown because too many files have changed in this diff Show More