* Add .x as XDR/RPCGEN

XDR/RPC language as documented in RFC5531, RFC4506.
Samples are from glibc and RFCs.

* Add Logos samples

https://github.com/JonasGessner/NoCarrier/blob/master/NoCarrier.x - MIT
cf31f4e466/llvm-gcc-R3/gcc/testsuite/objc/execute/string1.x - GPL2
f6415578fa/perapp-plugin/Tweak.x - GPL3
d1b3e83888/NCHax.x - Apache

* Add disambiguate heuristics for .x

* Add RPC to vendor/README.md
This commit is contained in:
Dylan Simon 2018-01-25 04:15:09 -05:00 коммит произвёл Colin Seymour
Родитель 8da6ddf9d9
Коммит 60f748d47b
10 изменённых файлов: 1048 добавлений и 0 удалений

Просмотреть файл

@ -513,5 +513,13 @@ module Linguist
end
end
disambiguate ".x" do |data|
if /\b(program|version)\s+\w+\s*{|\bunion\s+\w+\s+switch\s*\(/.match(data)
Language["RPC"]
elsif /^%(end|ctor|hook|group)\b/.match(data)
Language["Logos"]
end
end
end
end

Просмотреть файл

@ -3753,6 +3753,17 @@ RMarkdown:
- ".rmd"
tm_scope: source.gfm
language_id: 313
RPC:
type: programming
aliases:
- rpcgen
- oncrpc
- xdr
ace_mode: c_cpp
extensions:
- ".x"
tm_scope: source.c
language_id: 1031374237
RPM Spec:
type: data
tm_scope: source.rpm-spec

57
samples/Logos/NCHax.x Normal file
Просмотреть файл

@ -0,0 +1,57 @@
#import <UIKit/UIKit.h>
#import <BulletinBoard/BBSectionInfo.h>
#import <UIKit/UIImage+Private.h>
#import <version.h>
static NSString *const kHBDPWeeAppIdentifier = @"ws.hbang.dailypaperweeapp";
#pragma mark - Change section header and icon
// courtesy of benno
BOOL isDailyPaper = NO;
%hook SBBulletinObserverViewController
- (void)_addSection:(BBSectionInfo *)section toCategory:(NSInteger)category widget:(id)widget {
if ([section.sectionID isEqualToString:kHBDPWeeAppIdentifier]) {
isDailyPaper = YES;
%orig;
isDailyPaper = NO;
} else {
%orig;
}
}
%end
%hook SBBulletinListSection
- (void)setDisplayName:(NSString *)displayName {
%orig(isDailyPaper ? @"Current Wallpaper" : displayName);
}
- (void)setIconImage:(UIImage *)iconImage {
%orig(isDailyPaper ? [UIImage imageNamed:@"icon" inBundle:[NSBundle bundleWithPath:@"/Library/PreferenceBundles/DailyPaper.bundle"]] : iconImage);
}
%end
#pragma mark - Enable by default
%hook SBNotificationCenterDataProviderController
- (NSArray *)_copyDefaultEnabledWidgetIDs {
NSArray *defaultWidgets = %orig;
return [[defaultWidgets arrayByAddingObject:kHBDPWeeAppIdentifier] copy];
}
%end
#pragma mark - Constructor
%ctor {
if (!IS_IOS_OR_NEWER(iOS_8_0)) {
%init;
}
}

42
samples/Logos/NoCarrier.x Normal file
Просмотреть файл

@ -0,0 +1,42 @@
//
// NoCarrier.x
// NoCarrier
//
// Created by Jonas Gessner on 27.01.2014.
// Copyright (c) 2014 Jonas Gessner. All rights reserved.
//
#import <CoreGraphics/CoreGraphics.h>
#include <substrate.h>
%group main
%hook UIStatusBarServiceItemView
- (id)_serviceContentsImage {
return nil;
}
- (CGFloat)extraLeftPadding {
return 0.0f;
}
- (CGFloat)extraRightPadding {
return 0.0f;
}
- (CGFloat)standardPadding {
return 2.0f;
}
%end
%end
%ctor {
@autoreleasepool {
%init(main);
}
}

239
samples/Logos/Tweak.x Normal file
Просмотреть файл

@ -0,0 +1,239 @@
/*
* ShadowSocks Per-App Proxy Plugin
* https://github.com/linusyang/MobileShadowSocks
*
* Copyright (c) 2014 Linus Yang <laokongzi@gmail.com>
*
* 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 3 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 <UIKit/UIKit.h>
#include <libfinder/LFFinderController.h>
#define FUNC_NAME SCDynamicStoreCopyProxies
#define ORIG_FUNC original_ ## FUNC_NAME
#define CUST_FUNC custom_ ## FUNC_NAME
#define DECL_FUNC(ret, ...) \
extern ret FUNC_NAME(__VA_ARGS__); \
static ret (*ORIG_FUNC)(__VA_ARGS__); \
ret CUST_FUNC(__VA_ARGS__)
#define HOOK_FUNC() \
MSHookFunction(FUNC_NAME, (void *) CUST_FUNC, (void **) &ORIG_FUNC)
typedef const struct __SCDynamicStore *SCDynamicStoreRef;
void MSHookFunction(void *symbol, void *replace, void **result);
static BOOL proxyEnabled = YES;
static BOOL spdyDisabled = YES;
static BOOL finderEnabled = YES;
static BOOL getValue(NSDictionary *dict, NSString *key, BOOL defaultVal)
{
if (dict == nil || key == nil) {
return defaultVal;
}
NSNumber *valObj = [dict objectForKey:key];
if (valObj == nil) {
return defaultVal;
}
return [valObj boolValue];
}
static void updateSettings(void)
{
proxyEnabled = YES;
spdyDisabled = YES;
finderEnabled = YES;
NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:@"/var/mobile/Library/Preferences/com.linusyang.ssperapp.plist"];
if (dict != nil) {
NSString *bundleName = [[NSBundle mainBundle] bundleIdentifier];
if (getValue(dict, @"SSPerAppEnabled", NO) && bundleName != nil) {
NSString *entry = [[NSString alloc] initWithFormat:@"Enabled-%@", bundleName];
proxyEnabled = getValue(dict, entry, NO);
if (getValue(dict, @"SSPerAppReversed", NO)) {
proxyEnabled = !proxyEnabled;
}
[entry release];
}
spdyDisabled = getValue(dict, @"SSPerAppDisableSPDY", YES);
finderEnabled = getValue(dict, @"SSPerAppFinder", YES);
[dict release];
}
}
DECL_FUNC(CFDictionaryRef, SCDynamicStoreRef store)
{
if (proxyEnabled) {
return ORIG_FUNC(store);
}
CFMutableDictionaryRef proxyDict = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
int zero = 0;
CFNumberRef zeroNumber = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &zero);
CFDictionarySetValue(proxyDict, CFSTR("HTTPEnable"), zeroNumber);
CFDictionarySetValue(proxyDict, CFSTR("HTTPProxyType"), zeroNumber);
CFDictionarySetValue(proxyDict, CFSTR("HTTPSEnable"), zeroNumber);
CFDictionarySetValue(proxyDict, CFSTR("ProxyAutoConfigEnable"), zeroNumber);
CFRelease(zeroNumber);
return proxyDict;
}
@interface SettingTableViewController <LFFinderActionDelegate>
- (BOOL)useLibFinder;
- (UIViewController *)allocFinderController;
- (void)finderSelectedFilePath:(NSString *)path checkSanity:(BOOL)check;
@end
%group FinderHook
%hook SettingTableViewController
- (BOOL)useLibFinder
{
return finderEnabled;
}
- (UIViewController *)allocFinderController
{
LFFinderController* finder = [[LFFinderController alloc] initWithMode:LFFinderModeDefault];
finder.actionDelegate = self;
return finder;
}
%new
-(void)finder:(LFFinderController*)finder didSelectItemAtPath:(NSString*)path
{
[self finderSelectedFilePath:path checkSanity:NO];
}
%end
%end
%group TwitterHook
%hook T1SPDYConfigurationChangeListener
- (BOOL)_shouldEnableSPDY
{
if (spdyDisabled) {
return NO;
} else {
return %orig;
}
}
%end
%end
%group FacebookHook
%hook FBRequester
- (BOOL)allowSPDY
{
if (spdyDisabled) {
return NO;
} else {
return %orig;
}
}
- (BOOL)useDNSCache
{
if (spdyDisabled) {
return NO;
} else {
return %orig;
}
}
%end
%hook FBNetworkerRequest
- (BOOL)disableSPDY
{
if (spdyDisabled) {
return YES;
} else {
return %orig;
}
}
%end
%hook FBRequesterState
- (BOOL)didUseSPDY
{
if (spdyDisabled) {
return NO;
} else {
return %orig;
}
}
%end
%hook FBAppConfigService
- (BOOL)disableDNSCache
{
if (spdyDisabled) {
return YES;
} else {
return %orig;
}
}
%end
%hook FBNetworker
- (BOOL)_shouldAllowUseOfDNSCache:(id)arg
{
if (spdyDisabled) {
return NO;
} else {
return %orig;
}
}
%end
%hook FBAppSessionController
- (BOOL)networkerShouldAllowUseOfDNSCache:(id)arg
{
if (spdyDisabled) {
return NO;
} else {
return %orig;
}
}
%end
%end
%ctor
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *bundleName = [[NSBundle mainBundle] bundleIdentifier];
if (bundleName != nil && ![bundleName isEqualToString:@"com.apple.springboard"]) {
updateSettings();
CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, (CFNotificationCallback) updateSettings, CFSTR("com.linusyang.ssperapp.settingschanged"), NULL, CFNotificationSuspensionBehaviorCoalesce);
if ([bundleName isEqualToString:@"com.linusyang.MobileShadowSocks"]) {
%init(FinderHook);
} else {
HOOK_FUNC();
if ([bundleName isEqualToString:@"com.atebits.Tweetie2"]) {
%init(TwitterHook);
} else if ([bundleName isEqualToString:@"com.facebook.Facebook"]) {
%init(FacebookHook);
}
}
}
[pool drain];
}

5
samples/Logos/string1.x Normal file
Просмотреть файл

@ -0,0 +1,5 @@
# APPLE LOCAL file string workaround 4943900
if { [istarget "*-*-darwin\[9123\]*"] } {
set additional_flags "-framework Foundation -fconstant-cfstrings"
}
return 0

146
samples/RPC/rpc.x Normal file
Просмотреть файл

@ -0,0 +1,146 @@
/* rpc.x extracted from RFC5531 */
const RPC_VERS = 2;
enum auth_flavor {
AUTH_NONE = 0,
AUTH_SYS = 1,
AUTH_SHORT = 2,
AUTH_DH = 3,
AUTH_KERB = 4, /* RFC2695 */
AUTH_RSA = 5,
RPCSEC_GSS = 6 /* RFC2203 */
/* and more to be defined */
};
typedef opaque opaque_auth_body<400>;
struct opaque_auth {
int flavor; /* may be "pseudo" value outside enum */
opaque_auth_body body;
};
enum msg_type {
CALL = 0,
REPLY = 1
};
enum reply_stat {
MSG_ACCEPTED = 0,
MSG_DENIED = 1
};
enum accept_stat {
SUCCESS = 0, /* RPC executed successfully */
PROG_UNAVAIL = 1, /* remote hasn't exported program */
PROG_MISMATCH = 2, /* remote can't support version # */
PROC_UNAVAIL = 3, /* program can't support procedure */
GARBAGE_ARGS = 4, /* procedure can't decode params */
SYSTEM_ERR = 5 /* e.g. memory allocation failure */
};
enum reject_stat {
RPC_MISMATCH = 0, /* RPC version number != 2 */
AUTH_ERROR = 1 /* remote can't authenticate caller */
};
enum auth_stat {
AUTH_OK = 0, /* success */
/*
* failed at remote end
*/
AUTH_BADCRED = 1, /* bad credential (seal broken) */
AUTH_REJECTEDCRED = 2, /* client must begin new session */
AUTH_BADVERF = 3, /* bad verifier (seal broken) */
AUTH_REJECTEDVERF = 4, /* verifier expired or replayed */
AUTH_TOOWEAK = 5, /* rejected for security reasons */
/*
* failed locally
*/
AUTH_INVALIDRESP = 6, /* bogus response verifier */
AUTH_FAILED = 7, /* reason unknown */
/*
* AUTH_KERB errors; deprecated. See [[139]RFC2695]
*/
AUTH_KERB_GENERIC = 8, /* kerberos generic error */
AUTH_TIMEEXPIRE = 9, /* time of credential expired */
AUTH_TKT_FILE = 10, /* problem with ticket file */
AUTH_DECODE = 11, /* can't decode authenticator */
AUTH_NET_ADDR = 12, /* wrong net address in ticket */
/*
* RPCSEC_GSS GSS related errors
*/
RPCSEC_GSS_CREDPROBLEM = 13, /* no credentials for user */
RPCSEC_GSS_CTXPROBLEM = 14 /* problem with context */
};
struct rpc_msg {
unsigned int xid;
union rpc_msg_body body;
};
union rpc_msg_body switch (msg_type mtype) {
case CALL:
call_body cbody;
case REPLY:
reply_body rbody;
};
struct call_body {
unsigned int rpcvers; /* must be equal to two (2) */
unsigned int prog;
unsigned int vers;
unsigned int proc;
opaque_auth cred;
opaque_auth verf;
/* procedure-specific parameters start here */
};
union reply_body switch (reply_stat stat) {
case MSG_ACCEPTED:
accepted_reply areply;
case MSG_DENIED:
rejected_reply rreply;
} /*reply*/;
struct accepted_reply {
opaque_auth verf;
union accepted_reply_data reply_data;
};
union accepted_reply_data switch (accept_stat stat) {
case SUCCESS:
void /* opaque results[0] */;
/*
* procedure-specific results start here
*/
case PROG_MISMATCH:
struct {
unsigned int low;
unsigned int high;
} mismatch_info;
default:
/*
* Void. Cases include PROG_UNAVAIL, PROC_UNAVAIL,
* GARBAGE_ARGS, and SYSTEM_ERR.
*/
void;
};
union rejected_reply switch (reject_stat stat) {
case RPC_MISMATCH:
struct {
unsigned int low;
unsigned int high;
} mismatch_info;
case AUTH_ERROR:
auth_stat auth_stat; /* renamed to avoid conflict with discriminator */
};
struct authsys_parms {
unsigned int stamp;
string machinename<255>;
unsigned int uid;
unsigned int gid;
unsigned int gids<16>;
};

228
samples/RPC/rusers.x Normal file
Просмотреть файл

@ -0,0 +1,228 @@
/*
* Copyright (c) 2010, Oracle America, Inc.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
* * Neither the name of the "Oracle America, Inc." nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
%/*
% * Find out about remote users
% */
const RUSERS_MAXUSERLEN = 32;
const RUSERS_MAXLINELEN = 32;
const RUSERS_MAXHOSTLEN = 257;
struct rusers_utmp {
string ut_user<RUSERS_MAXUSERLEN>; /* aka ut_name */
string ut_line<RUSERS_MAXLINELEN>; /* device */
string ut_host<RUSERS_MAXHOSTLEN>; /* host user logged on from */
int ut_type; /* type of entry */
int ut_time; /* time entry was made */
unsigned int ut_idle; /* minutes idle */
};
typedef rusers_utmp utmp_array<>;
#ifdef RPC_HDR
%
%/*
% * Values for ut_type field above.
% */
#endif
const RUSERS_EMPTY = 0;
const RUSERS_RUN_LVL = 1;
const RUSERS_BOOT_TIME = 2;
const RUSERS_OLD_TIME = 3;
const RUSERS_NEW_TIME = 4;
const RUSERS_INIT_PROCESS = 5;
const RUSERS_LOGIN_PROCESS = 6;
const RUSERS_USER_PROCESS = 7;
const RUSERS_DEAD_PROCESS = 8;
const RUSERS_ACCOUNTING = 9;
program RUSERSPROG {
version RUSERSVERS_3 {
int
RUSERSPROC_NUM(void) = 1;
utmp_array
RUSERSPROC_NAMES(void) = 2;
utmp_array
RUSERSPROC_ALLNAMES(void) = 3;
} = 3;
} = 100002;
#ifdef RPC_HDR
%
%
%#ifdef __cplusplus
%extern "C" {
%#endif
%
%#include <rpc/xdr.h>
%
%/*
% * The following structures are used by version 2 of the rusersd protocol.
% * They were not developed with rpcgen, so they do not appear as RPCL.
% */
%
%#define RUSERSVERS_IDLE 2
%#define RUSERSVERS 3 /* current version */
%#define MAXUSERS 100
%
%/*
% * This is the structure used in version 2 of the rusersd RPC service.
% * It corresponds to the utmp structure for BSD systems.
% */
%struct ru_utmp {
% char ut_line[8]; /* tty name */
% char ut_name[8]; /* user id */
% char ut_host[16]; /* host name, if remote */
% long int ut_time; /* time on */
%};
%
%struct utmparr {
% struct ru_utmp **uta_arr;
% int uta_cnt;
%};
%typedef struct utmparr utmparr;
%
%extern bool_t xdr_utmparr (XDR *xdrs, struct utmparr *objp) __THROW;
%
%struct utmpidle {
% struct ru_utmp ui_utmp;
% unsigned int ui_idle;
%};
%
%struct utmpidlearr {
% struct utmpidle **uia_arr;
% int uia_cnt;
%};
%
%extern bool_t xdr_utmpidlearr (XDR *xdrs, struct utmpidlearr *objp) __THROW;
%
%#ifdef __cplusplus
%}
%#endif
#endif
#ifdef RPC_XDR
%bool_t xdr_utmp (XDR *xdrs, struct ru_utmp *objp);
%
%bool_t
%xdr_utmp (XDR *xdrs, struct ru_utmp *objp)
%{
% /* Since the fields are char foo [xxx], we should not free them. */
% if (xdrs->x_op != XDR_FREE)
% {
% char *ptr;
% unsigned int size;
% ptr = objp->ut_line;
% size = sizeof (objp->ut_line);
% if (!xdr_bytes (xdrs, &ptr, &size, size)) {
% return (FALSE);
% }
% ptr = objp->ut_name;
% size = sizeof (objp->ut_name);
% if (!xdr_bytes (xdrs, &ptr, &size, size)) {
% return (FALSE);
% }
% ptr = objp->ut_host;
% size = sizeof (objp->ut_host);
% if (!xdr_bytes (xdrs, &ptr, &size, size)) {
% return (FALSE);
% }
% }
% if (!xdr_long(xdrs, &objp->ut_time)) {
% return (FALSE);
% }
% return (TRUE);
%}
%
%bool_t xdr_utmpptr(XDR *xdrs, struct ru_utmp **objpp);
%
%bool_t
%xdr_utmpptr (XDR *xdrs, struct ru_utmp **objpp)
%{
% if (!xdr_reference(xdrs, (char **) objpp, sizeof (struct ru_utmp),
% (xdrproc_t) xdr_utmp)) {
% return (FALSE);
% }
% return (TRUE);
%}
%
%bool_t
%xdr_utmparr (XDR *xdrs, struct utmparr *objp)
%{
% if (!xdr_array(xdrs, (char **)&objp->uta_arr, (u_int *)&objp->uta_cnt,
% MAXUSERS, sizeof(struct ru_utmp *),
% (xdrproc_t) xdr_utmpptr)) {
% return (FALSE);
% }
% return (TRUE);
%}
%
%bool_t xdr_utmpidle(XDR *xdrs, struct utmpidle *objp);
%
%bool_t
%xdr_utmpidle (XDR *xdrs, struct utmpidle *objp)
%{
% if (!xdr_utmp(xdrs, &objp->ui_utmp)) {
% return (FALSE);
% }
% if (!xdr_u_int(xdrs, &objp->ui_idle)) {
% return (FALSE);
% }
% return (TRUE);
%}
%
%bool_t xdr_utmpidleptr(XDR *xdrs, struct utmpidle **objp);
%
%bool_t
%xdr_utmpidleptr (XDR *xdrs, struct utmpidle **objpp)
%{
% if (!xdr_reference(xdrs, (char **) objpp, sizeof (struct utmpidle),
% (xdrproc_t) xdr_utmpidle)) {
% return (FALSE);
% }
% return (TRUE);
%}
%
%bool_t
%xdr_utmpidlearr (XDR *xdrs, struct utmpidlearr *objp)
%{
% if (!xdr_array(xdrs, (char **)&objp->uia_arr, (u_int *)&objp->uia_cnt,
% MAXUSERS, sizeof(struct utmpidle *),
% (xdrproc_t) xdr_utmpidleptr)) {
% return (FALSE);
% }
% return (TRUE);
%}
#endif

311
samples/RPC/yp.x Normal file
Просмотреть файл

@ -0,0 +1,311 @@
/* @(#)yp.x 2.1 88/08/01 4.0 RPCSRC */
/*
* Copyright (c) 2010, Oracle America, Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
* * Neither the name of the "Oracle America, Inc." nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
* Protocol description file for the Yellow Pages Service
*/
const YPMAXRECORD = 1024;
const YPMAXDOMAIN = 64;
const YPMAXMAP = 64;
const YPMAXPEER = 64;
enum ypstat {
YP_TRUE = 1,
YP_NOMORE = 2,
YP_FALSE = 0,
YP_NOMAP = -1,
YP_NODOM = -2,
YP_NOKEY = -3,
YP_BADOP = -4,
YP_BADDB = -5,
YP_YPERR = -6,
YP_BADARGS = -7,
YP_VERS = -8
};
enum ypxfrstat {
YPXFR_SUCC = 1,
YPXFR_AGE = 2,
YPXFR_NOMAP = -1,
YPXFR_NODOM = -2,
YPXFR_RSRC = -3,
YPXFR_RPC = -4,
YPXFR_MADDR = -5,
YPXFR_YPERR = -6,
YPXFR_BADARGS = -7,
YPXFR_DBM = -8,
YPXFR_FILE = -9,
YPXFR_SKEW = -10,
YPXFR_CLEAR = -11,
YPXFR_FORCE = -12,
YPXFR_XFRERR = -13,
YPXFR_REFUSED = -14
};
typedef string domainname<YPMAXDOMAIN>;
typedef string mapname<YPMAXMAP>;
typedef string peername<YPMAXPEER>;
typedef opaque keydat<YPMAXRECORD>;
typedef opaque valdat<YPMAXRECORD>;
struct ypmap_parms {
domainname domain;
mapname map;
unsigned int ordernum;
peername peer;
};
struct ypreq_key {
domainname domain;
mapname map;
keydat key;
};
struct ypreq_nokey {
domainname domain;
mapname map;
};
struct ypreq_xfr {
ypmap_parms map_parms;
unsigned int transid;
unsigned int prog;
unsigned int port;
};
struct ypresp_val {
ypstat stat;
valdat val;
};
struct ypresp_key_val {
ypstat stat;
#ifdef STUPID_SUN_BUG
/* This is the form as distributed by Sun. But even the Sun NIS
servers expect the values in the other order. So their
implementation somehow must change the order internally. We
don't want to follow this bad example since the user should be
able to use rpcgen on this file. */
keydat key;
valdat val;
#else
valdat val;
keydat key;
#endif
};
struct ypresp_master {
ypstat stat;
peername peer;
};
struct ypresp_order {
ypstat stat;
unsigned int ordernum;
};
union ypresp_all switch (bool more) {
case TRUE:
ypresp_key_val val;
case FALSE:
void;
};
struct ypresp_xfr {
unsigned int transid;
ypxfrstat xfrstat;
};
struct ypmaplist {
mapname map;
ypmaplist *next;
};
struct ypresp_maplist {
ypstat stat;
ypmaplist *maps;
};
enum yppush_status {
YPPUSH_SUCC = 1, /* Success */
YPPUSH_AGE = 2, /* Master's version not newer */
YPPUSH_NOMAP = -1, /* Can't find server for map */
YPPUSH_NODOM = -2, /* Domain not supported */
YPPUSH_RSRC = -3, /* Local resource alloc failure */
YPPUSH_RPC = -4, /* RPC failure talking to server */
YPPUSH_MADDR = -5, /* Can't get master address */
YPPUSH_YPERR = -6, /* YP server/map db error */
YPPUSH_BADARGS = -7, /* Request arguments bad */
YPPUSH_DBM = -8, /* Local dbm operation failed */
YPPUSH_FILE = -9, /* Local file I/O operation failed */
YPPUSH_SKEW = -10, /* Map version skew during transfer */
YPPUSH_CLEAR = -11, /* Can't send "Clear" req to local ypserv */
YPPUSH_FORCE = -12, /* No local order number in map use -f flag. */
YPPUSH_XFRERR = -13, /* ypxfr error */
YPPUSH_REFUSED = -14 /* Transfer request refused by ypserv */
};
struct yppushresp_xfr {
unsigned transid;
yppush_status status;
};
/*
* Response structure and overall result status codes. Success and failure
* represent two separate response message types.
*/
enum ypbind_resptype {
YPBIND_SUCC_VAL = 1,
YPBIND_FAIL_VAL = 2
};
struct ypbind_binding {
opaque ypbind_binding_addr[4]; /* In network order */
opaque ypbind_binding_port[2]; /* In network order */
};
union ypbind_resp switch (ypbind_resptype ypbind_status) {
case YPBIND_FAIL_VAL:
unsigned ypbind_error;
case YPBIND_SUCC_VAL:
ypbind_binding ypbind_bindinfo;
};
/* Detailed failure reason codes for response field ypbind_error*/
const YPBIND_ERR_ERR = 1; /* Internal error */
const YPBIND_ERR_NOSERV = 2; /* No bound server for passed domain */
const YPBIND_ERR_RESC = 3; /* System resource allocation failure */
/*
* Request data structure for ypbind "Set domain" procedure.
*/
struct ypbind_setdom {
domainname ypsetdom_domain;
ypbind_binding ypsetdom_binding;
unsigned ypsetdom_vers;
};
/*
* YP access protocol
*/
program YPPROG {
version YPVERS {
void
YPPROC_NULL(void) = 0;
bool
YPPROC_DOMAIN(domainname) = 1;
bool
YPPROC_DOMAIN_NONACK(domainname) = 2;
ypresp_val
YPPROC_MATCH(ypreq_key) = 3;
ypresp_key_val
YPPROC_FIRST(ypreq_key) = 4;
ypresp_key_val
YPPROC_NEXT(ypreq_key) = 5;
ypresp_xfr
YPPROC_XFR(ypreq_xfr) = 6;
void
YPPROC_CLEAR(void) = 7;
ypresp_all
YPPROC_ALL(ypreq_nokey) = 8;
ypresp_master
YPPROC_MASTER(ypreq_nokey) = 9;
ypresp_order
YPPROC_ORDER(ypreq_nokey) = 10;
ypresp_maplist
YPPROC_MAPLIST(domainname) = 11;
} = 2;
} = 100004;
/*
* YPPUSHPROC_XFRRESP is the callback routine for result of YPPROC_XFR
*/
program YPPUSH_XFRRESPPROG {
version YPPUSH_XFRRESPVERS {
void
YPPUSHPROC_NULL(void) = 0;
#ifdef STUPID_SUN_BUG
/* This is the form as distributed by Sun. But even
the Sun NIS servers expect the values in the other
order. So their implementation somehow must change
the order internally. We don't want to follow this
bad example since the user should be able to use
rpcgen on this file. */
yppushresp_xfr
YPPUSHPROC_XFRRESP(void) = 1;
#else
void
YPPUSHPROC_XFRRESP(yppushresp_xfr) = 1;
#endif
} = 1;
} = 0x40000000; /* transient: could be anything up to 0x5fffffff */
/*
* YP binding protocol
*/
program YPBINDPROG {
version YPBINDVERS {
void
YPBINDPROC_NULL(void) = 0;
ypbind_resp
YPBINDPROC_DOMAIN(domainname) = 1;
void
YPBINDPROC_SETDOM(ypbind_setdom) = 2;
} = 2;
} = 100007;

1
vendor/README.md поставляемый
Просмотреть файл

@ -313,6 +313,7 @@ This is a list of grammars that Linguist selects to provide syntax highlighting
- **RobotFramework:** [shellderp/sublime-robot-plugin](https://github.com/shellderp/sublime-robot-plugin)
- **Roff:** [Alhadis/language-roff](https://github.com/Alhadis/language-roff)
- **Rouge:** [atom/language-clojure](https://github.com/atom/language-clojure)
- **RPC:** [textmate/c.tmbundle](https://github.com/textmate/c.tmbundle)
- **RPM Spec:** [waveclaw/language-rpm-spec](https://github.com/waveclaw/language-rpm-spec)
- **Ruby:** [atom/language-ruby](https://github.com/atom/language-ruby)
- **RUNOFF:** [Alhadis/language-roff](https://github.com/Alhadis/language-roff)