Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
1d796741
Commit
1d796741
authored
Mar 17, 2011
by
Max TenEyck Woodbury
Committed by
Alexandre Julliard
Mar 17, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
c2man: Label export list slots.
parent
e705f29f
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
53 additions
and
42 deletions
+53
-42
c2man.pl
tools/c2man.pl
+53
-42
No files found.
tools/c2man.pl
View file @
1d796741
...
...
@@ -38,6 +38,12 @@ my $FLAG_APAIR = 16; # The A version of a matching W function
my
$FLAG_WPAIR
=
32
;
# The W version of a matching A function
my
$FLAG_64PAIR
=
64
;
# The 64 bit version of a matching 32 bit function
# Export list slot labels.
my
$EXPORT_ORDINAL
=
0
;
# Ordinal.
my
$EXPORT_CALL
=
1
;
# Call type.
my
$EXPORT_EXPNAME
=
2
;
# Export name.
my
$EXPORT_IMPNAME
=
3
;
# Implementation name.
my
$EXPORT_FLAGS
=
4
;
# Flags - see above.
# Options
my
$opt_output_directory
=
"man3w"
;
# All default options are for nroff (man pages)
...
...
@@ -595,9 +601,9 @@ sub process_comment($)
# Find the name from the .spec file
for
(
@
{
$spec_details
->
{
EXPORTS
}})
{
if
(
@$_
[
0
]
eq
$comment
->
{
ORDINAL
})
if
(
@$_
[
$EXPORT_ORDINAL
]
eq
$comment
->
{
ORDINAL
})
{
$comment
->
{
COMMENT_NAME
}
=
@$_
[
2
];
$comment
->
{
COMMENT_NAME
}
=
@$_
[
$EXPORT_EXPNAME
];
$found
=
1
;
}
}
...
...
@@ -644,7 +650,7 @@ sub process_comment($)
print
"Info: Found alternate name '"
,
$1
,
"\n"
;
}
my
$alt_export
=
@
{
$spec_details
->
{
EXPORTS
}}[
$alt_index
];
@$alt_export
[
4
]
|=
$FLAG_DOCUMENTED
;
@$alt_export
[
$EXPORT_FLAGS
]
|=
$FLAG_DOCUMENTED
;
$spec_details
->
{
NUM_DOCS
}
++
;
$
{
$comment
->
{
TEXT
}}[
1
]
=
""
;
}
...
...
@@ -668,12 +674,12 @@ sub process_comment($)
# We want our docs generated using the implementation name, so they are unique
my
$export
=
@
{
$spec_details
->
{
EXPORTS
}}[
$export_index
];
$comment
->
{
COMMENT_NAME
}
=
@$export
[
3
];
$comment
->
{
ALT_NAME
}
=
@$export
[
2
];
$comment
->
{
COMMENT_NAME
}
=
@$export
[
$EXPORT_IMPNAME
];
$comment
->
{
ALT_NAME
}
=
@$export
[
$EXPORT_EXPNAME
];
# Mark the function as documented
$spec_details
->
{
NUM_DOCS
}
++
;
@$export
[
4
]
|=
$FLAG_DOCUMENTED
;
@$export
[
$EXPORT_FLAGS
]
|=
$FLAG_DOCUMENTED
;
# This file is used by the DLL - Make sure we get our contributors right
push
(
@
{
$spec_details
->
{
SOURCES
}},
$comment
->
{
FILE
});
...
...
@@ -774,11 +780,11 @@ sub process_comment($)
else
{
my
$ascii_export
=
@
{
$spec_details
->
{
EXPORTS
}}[
$ascii_export_index
];
if
(
@$ascii_export
[
4
]
&
$FLAG_DOCUMENTED
)
if
(
@$ascii_export
[
$EXPORT_FLAGS
]
&
$FLAG_DOCUMENTED
)
{
# Flag these functions as an A/W pair
@$ascii_export
[
4
]
|=
$FLAG_APAIR
;
@$export
[
4
]
|=
$FLAG_WPAIR
;
@$ascii_export
[
$EXPORT_FLAGS
]
|=
$FLAG_APAIR
;
@$export
[
$EXPORT_FLAGS
]
|=
$FLAG_WPAIR
;
}
}
}
...
...
@@ -786,12 +792,12 @@ sub process_comment($)
}
elsif
(
/^Unicode version of ([A-Za-z0-9_]+)\.$/
)
{
@$export
[
4
]
|=
$FLAG_WPAIR
;
# Explicitly marked as W version
@$export
[
$EXPORT_FLAGS
]
|=
$FLAG_WPAIR
;
# Explicitly marked as W version
$found_returns
=
1
;
}
elsif
(
/^64\-bit version of ([A-Za-z0-9_]+)\.$/
)
{
@$export
[
4
]
|=
$FLAG_64PAIR
;
# Explicitly marked as 64 bit version
@$export
[
$EXPORT_FLAGS
]
|=
$FLAG_64PAIR
;
# Explicitly marked as 64 bit version
$found_returns
=
1
;
}
$found_description_text
=
1
;
...
...
@@ -810,7 +816,7 @@ sub process_comment($)
"description and/or RETURNS section, skipping\n"
;
}
$spec_details
->
{
NUM_DOCS
}
--
;
@$export
[
4
]
&=
~
$FLAG_DOCUMENTED
;
@$export
[
$EXPORT_FLAGS
]
&=
~
$FLAG_DOCUMENTED
;
return
;
}
}
...
...
@@ -844,7 +850,7 @@ sub process_comment($)
# Find header file
my
$h_file
=
""
;
if
(
@$export
[
4
]
&
$FLAG_NONAME
)
if
(
@$export
[
$EXPORT_FLAGS
]
&
$FLAG_NONAME
)
{
$h_file
=
"Exported by ordinal only. Use GetProcAddress() to obtain a pointer to the function."
;
}
...
...
@@ -913,11 +919,11 @@ sub process_comment($)
# Add the implementation details
push
(
@
{
$comment
->
{
TEXT
}},
"IMPLEMENTATION"
,
""
,
$h_file
,
""
,
$c_file
);
if
(
@$export
[
4
]
&
$FLAG_I386
)
if
(
@$export
[
$EXPORT_FLAGS
]
&
$FLAG_I386
)
{
push
(
@
{
$comment
->
{
TEXT
}},
""
,
"Available on x86 platforms only."
);
}
if
(
@$export
[
4
]
&
$FLAG_REGISTER
)
if
(
@$export
[
$EXPORT_FLAGS
]
&
$FLAG_REGISTER
)
{
push
(
@
{
$comment
->
{
TEXT
}},
""
,
"This function passes one or more arguments in registers. "
,
"For more details, please read the source code."
);
...
...
@@ -1209,57 +1215,57 @@ sub output_spec($)
my
$line
=
""
;
# @$_ => ordinal, call convention, exported name, implementation name, flags;
if
(
@$_
[
1
]
eq
"forward"
)
if
(
@$_
[
$EXPORT_CALL
]
eq
"forward"
)
{
my
$forward_dll
=
@$_
[
3
];
my
$forward_dll
=
@$_
[
$EXPORT_IMPNAME
];
$forward_dll
=~
s/\.(.*)//
;
$line
=
@$_
[
2
]
.
" (forward to "
.
$1
.
"() in "
.
$forward_dll
.
"())"
;
$line
=
@$_
[
$EXPORT_EXPNAME
]
.
" (forward to "
.
$1
.
"() in "
.
$forward_dll
.
"())"
;
}
elsif
(
@$_
[
1
]
eq
"extern"
)
elsif
(
@$_
[
$EXPORT_CALL
]
eq
"extern"
)
{
$line
=
@$_
[
2
]
.
" (extern)"
;
$line
=
@$_
[
$EXPORT_EXPNAME
]
.
" (extern)"
;
}
elsif
(
@$_
[
1
]
eq
"stub"
)
elsif
(
@$_
[
$EXPORT_CALL
]
eq
"stub"
)
{
$line
=
@$_
[
2
]
.
" (stub)"
;
$line
=
@$_
[
$EXPORT_EXPNAME
]
.
" (stub)"
;
}
elsif
(
@$_
[
1
]
eq
"fake"
)
elsif
(
@$_
[
$EXPORT_CALL
]
eq
"fake"
)
{
# Don't add this function here, it gets listed with the extra documentation
if
(
!
(
@$_
[
4
]
&
$FLAG_WPAIR
))
if
(
!
(
@$_
[
$EXPORT_FLAGS
]
&
$FLAG_WPAIR
))
{
# This function should be indexed
push
(
@index_entries_list
,
@$_
[
3
]
.
","
.
@$_
[
3
]);
push
(
@index_entries_list
,
@$_
[
$EXPORT_IMPNAME
]
.
","
.
@$_
[
$EXPORT_IMPNAME
]);
}
}
elsif
(
@$_
[
1
]
eq
"equate"
||
@$_
[
1
]
eq
"variable"
)
elsif
(
@$_
[
$EXPORT_CALL
]
eq
"equate"
||
@$_
[
$EXPORT_CALL
]
eq
"variable"
)
{
$line
=
@$_
[
2
]
.
" (data)"
;
$line
=
@$_
[
$EXPORT_EXPNAME
]
.
" (data)"
;
}
else
{
# A function
if
(
@$_
[
4
]
&
$FLAG_DOCUMENTED
)
if
(
@$_
[
$EXPORT_FLAGS
]
&
$FLAG_DOCUMENTED
)
{
# Documented
$line
=
@$_
[
2
]
.
" (implemented as "
.
@$_
[
3
]
.
"())"
;
if
(
@$_
[
2
]
ne
@$_
[
3
])
$line
=
@$_
[
$EXPORT_EXPNAME
]
.
" (implemented as "
.
@$_
[
$EXPORT_IMPNAME
]
.
"())"
;
if
(
@$_
[
$EXPORT_EXPNAME
]
ne
@$_
[
$EXPORT_IMPNAME
])
{
$line
=
@$_
[
2
]
.
" (implemented as "
.
@$_
[
3
]
.
"())"
;
$line
=
@$_
[
$EXPORT_EXPNAME
]
.
" (implemented as "
.
@$_
[
$EXPORT_IMPNAME
]
.
"())"
;
}
else
{
$line
=
@$_
[
2
]
.
"()"
;
$line
=
@$_
[
$EXPORT_EXPNAME
]
.
"()"
;
}
if
(
!
(
@$_
[
4
]
&
$FLAG_WPAIR
))
if
(
!
(
@$_
[
$EXPORT_FLAGS
]
&
$FLAG_WPAIR
))
{
# This function should be indexed
push
(
@index_entries_list
,
@$_
[
2
]
.
","
.
@$_
[
3
]);
push
(
@index_entries_list
,
@$_
[
$EXPORT_EXPNAME
]
.
","
.
@$_
[
$EXPORT_IMPNAME
]);
}
}
else
{
$line
=
@$_
[
2
]
.
" (not documented)"
;
$line
=
@$_
[
$EXPORT_EXPNAME
]
.
" (not documented)"
;
}
}
if
(
$line
ne
""
)
...
...
@@ -1981,11 +1987,13 @@ sub output_sgml_dll_file($)
for
(
@$exports
)
{
# @$_ => ordinal, call convention, exported name, implementation name, documented;
if
(
@$_
[
1
]
ne
"forward"
&&
@$_
[
1
]
ne
"extern"
&&
@$_
[
1
]
ne
"stub"
&&
@$_
[
1
]
ne
"equate"
&&
@$_
[
1
]
ne
"variable"
&&
@$_
[
1
]
ne
"fake"
&&
@$_
[
4
]
&
1
)
if
(
@$_
[
$EXPORT_CALL
]
ne
"forward"
&&
@$_
[
$EXPORT_CALL
]
ne
"extern"
&&
@$_
[
$EXPORT_CALL
]
ne
"stub"
&&
@$_
[
$EXPORT_CALL
]
ne
"equate"
&&
@$_
[
$EXPORT_CALL
]
ne
"variable"
&&
@$_
[
$EXPORT_CALL
]
ne
"fake"
&&
@$_
[
$EXPORT_FLAGS
]
&
$FLAGS_DOCUMENTED
)
{
# A documented function
push
(
@source_files
,
@$_
[
3
]);
push
(
@source_files
,
@$_
[
$EXPORT_IMPNAME
]);
}
}
...
...
@@ -2025,11 +2033,13 @@ sub output_xml_dll_file($)
for
(
@$exports
)
{
# @$_ => ordinal, call convention, exported name, implementation name, documented;
if
(
@$_
[
1
]
ne
"forward"
&&
@$_
[
1
]
ne
"extern"
&&
@$_
[
1
]
ne
"stub"
&&
@$_
[
1
]
ne
"equate"
&&
@$_
[
1
]
ne
"variable"
&&
@$_
[
1
]
ne
"fake"
&&
@$_
[
4
]
&
1
)
if
(
@$_
[
$EXPORT_CALL
]
ne
"forward"
&&
@$_
[
$EXPORT_CALL
]
ne
"extern"
&&
@$_
[
$EXPORT_CALL
]
ne
"stub"
&&
@$_
[
$EXPORT_CALL
]
ne
"equate"
&&
@$_
[
$EXPORT_CALL
]
ne
"variable"
&&
@$_
[
$EXPORT_CALL
]
ne
"fake"
&&
@$_
[
$EXPORT_FLAGS
]
&
$FLAG_DOCUMENTED
)
{
# A documented function
push
(
@source_files
,
@$_
[
3
]);
push
(
@source_files
,
@$_
[
$EXPORT_IMPNAME
]);
}
}
...
...
@@ -2341,7 +2351,8 @@ if ($opt_verbose > 3)
my
$exports
=
$spec_details
->
{
EXPORTS
};
for
(
@$exports
)
{
print
@$_
[
0
]
.
","
.
@$_
[
1
]
.
","
.
@$_
[
2
]
.
","
.
@$_
[
3
]
.
"\n"
;
print
@$_
[
$EXPORT_ORDINAL
]
.
","
.
@$_
[
$EXPORT_CALL
]
.
", "
.
@$_
[
$EXPORT_EXPNAME
]
.
","
.
@$_
[
$EXPORT_IMPNAME
]
.
"\n"
;
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment