Skip to content

Commit

Permalink
Another fast aid for Xcode 8
Browse files Browse the repository at this point in the history
  • Loading branch information
JugglerShu committed Jun 16, 2016
1 parent 5bc31a6 commit a2ae049
Show file tree
Hide file tree
Showing 9 changed files with 516 additions and 2 deletions.
27 changes: 25 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ endif

.PHONY: release debug clean clean-release clean-debug uninstall uuid build-test

release: uuid
release: uuid code_unsign
$(xcodebuild) Release $(REDIRECT)

debug: uuid
debug: uuid code_unsign
$(xcodebuild) Debug $(REDIRECT)


Expand All @@ -25,6 +25,29 @@ clean-debug:
uninstall:
rm -rf "$(HOME)/Library/Application Support/Developer/Shared/Xcode/Plug-ins/XVim.xcplugin"

code_unsign:
@xcode_path=`xcode-select -p`; \
echo Target Xcode : $${xcode_path}; \
xcode_version=`defaults read "$${xcode_path}/../Info" CFBundleShortVersionString`; \
major=`printf '%.0f' $${xcode_version}`; \
codesign -dv $${xcode_path}/../MacOS/Xcode > /dev/null 2>&1; \
if [[ $$? == 0 && $${major} -ge 8 ]]; then \
printf "With your Xcode version $${xcode_version} it is required to remove "; \
printf "code signature from Xcode to load XVim plugin. "; \
printf "This may increase security risk since you cannot validate Xcode signature once we remove it. "; \
printf "Do you want to remove code signature from your Xcode? (y/N)"; \
read -r -n 1 in; \
if [[ $$in != "" && ( $$in == "y" || $$in == "Y") ]]; then \
echo ; \
printf "Close Xcode and press enter."; \
read -r -n 1 in; \
$(MAKE) -C Tools/unsign; \
cp -n $${xcode_path}/../MacOS/Xcode $${xcode_path}/../MacOS/Xcode_orig; \
printf "The original Xcode binary is backed up to $${xcode_path}/../MacOS/Xcode_orig\n"; \
Tools/unsign/unsign $${xcode_path}/../MacOS/Xcode $${xcode_path}/../MacOS/Xcode; \
fi ;\
fi;

uuid:
@xcode_path=`xcode-select -p`; \
uuid=`defaults read "$${xcode_path}/../Info" DVTPlugInCompatibilityUUID`; \
Expand Down
17 changes: 17 additions & 0 deletions Tools/unsign/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
CC := gcc
ARCHS := -arch i386 -arch x86_64
CFLAGS := -c -std=c99 -O2 -pedantic -Wall -Wextra $(ARCHS) -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
LD := gcc
LDFLAGS := $(ARCHS)

unsign: unsign.o endian.o
$(LD) $(LDFLAGS) $^ -o $@

endian.o: endian.c endian.h
$(CC) $(CFLAGS) $< -o $@

unsign.o: unsign.c endian.h
$(CC) $(CFLAGS) $< -o $@

clean:
rm -f unsign endian.o unsign.o
16 changes: 16 additions & 0 deletions Tools/unsign/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
### Building

make

### Installing

1. `make`.
2. Move `unsign` to wherever you like.

### License
ISC

### Original

http://www.woodmann.com/collaborative/tools/index.php/Unsign

127 changes: 127 additions & 0 deletions Tools/unsign/endian.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
/*-
* Copyright (c) 2002 Thomas Moestl <tmm@FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. 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.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
*
* $FreeBSD$
*/

#include <stdint.h>

#include "endian.h"

/* Alignment-agnostic encode/decode bytestream to/from little/big endian. */

uint16_t be16dec(const void *pp)
{
uint8_t const *p = (uint8_t const *)pp;

return ((p[0] << 8) | p[1]);
}

uint32_t be32dec(const void *pp)
{
uint8_t const *p = (uint8_t const *)pp;

return (((unsigned)p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3]);
}

uint64_t be64dec(const void *pp)
{
uint8_t const *p = (uint8_t const *)pp;

return (((uint64_t)be32dec(p) << 32) | be32dec(p + 4));
}

uint16_t le16dec(const void *pp)
{
uint8_t const *p = (uint8_t const *)pp;

return ((p[1] << 8) | p[0]);
}

uint32_t le32dec(const void *pp)
{
uint8_t const *p = (uint8_t const *)pp;

return (((unsigned)p[3] << 24) | (p[2] << 16) | (p[1] << 8) | p[0]);
}

uint64_t le64dec(const void *pp)
{
uint8_t const *p = (uint8_t const *)pp;

return (((uint64_t)le32dec(p + 4) << 32) | le32dec(p));
}

void be16enc(void *pp, uint16_t u)
{
uint8_t *p = (uint8_t *)pp;

p[0] = (u >> 8) & 0xff;
p[1] = u & 0xff;
}

void be32enc(void *pp, uint32_t u)
{
uint8_t *p = (uint8_t *)pp;

p[0] = (u >> 24) & 0xff;
p[1] = (u >> 16) & 0xff;
p[2] = (u >> 8) & 0xff;
p[3] = u & 0xff;
}

void be64enc(void *pp, uint64_t u)
{
uint8_t *p = (uint8_t *)pp;

be32enc(p, (uint32_t)(u >> 32));
be32enc(p + 4, (uint32_t)(u & 0xffffffffU));
}

void le16enc(void *pp, uint16_t u)
{
uint8_t *p = (uint8_t *)pp;

p[0] = u & 0xff;
p[1] = (u >> 8) & 0xff;
}

void le32enc(void *pp, uint32_t u)
{
uint8_t *p = (uint8_t *)pp;

p[0] = u & 0xff;
p[1] = (u >> 8) & 0xff;
p[2] = (u >> 16) & 0xff;
p[3] = (u >> 24) & 0xff;
}

void le64enc(void *pp, uint64_t u)
{
uint8_t *p = (uint8_t *)pp;

le32enc(p, (uint32_t)(u & 0xffffffffU));
le32enc(p + 4, (uint32_t)(u >> 32));
}
24 changes: 24 additions & 0 deletions Tools/unsign/endian.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#ifndef ENDIAN_H
#define ENDIAN_H

#include <stdint.h>

/* Alignment-agnostic encode/decode bytestream to/from little/big endian. */

uint16_t be16dec(const void *pp);
uint32_t be32dec(const void *pp);
uint64_t be64dec(const void *pp);

uint16_t le16dec(const void *pp);
uint32_t le32dec(const void *pp);
uint64_t le64dec(const void *pp);

void be16enc(void *pp, uint16_t u);
void be32enc(void *pp, uint32_t u);
void be64enc(void *pp, uint64_t u);

void le16enc(void *pp, uint16_t u);
void le32enc(void *pp, uint32_t u);
void le64enc(void *pp, uint64_t u);

#endif
Binary file added Tools/unsign/endian.o
Binary file not shown.
Binary file added Tools/unsign/unsign
Binary file not shown.
Loading

0 comments on commit a2ae049

Please sign in to comment.