ncurses: init_color() has no effect - putty

Trying to define color pairs, I was getting strange results. All 256 colors are already defined, and attempt to change any color with init_color() has no affect.
I'm using Putty with 256-colors enabled and TERM=xterm-256color (also putty-256color), ncurses 6.0 compiled with --enable-widec and --enable-ext-colors. This shows all colors are defined and the init_color() doesn't change anything even though it succeeds:
init_scr();
start_color();
if (has_colors() && COLORS == 256 && can_change_color()) {
NCURSES_COLOR_T f;
for (f = 1; f < 256; f++) {
if (init_pair(f, f, COLOR_BLACK) == ERR) break;
attron(COLOR_PAIR(f));
printw("(%d)", f);
attroff(COLOR_PAIR(f));
refresh();
}
getch();
clear();
for (f = 1; f < 256; f++) {
if (init_color(f, 0, 0, f*3) == ERR) break;
if (init_pair(f, f, COLOR_BLACK) == ERR) break;
attron(COLOR_PAIR(f));
printw("(%d)", f);
attroff(COLOR_PAIR(f));
refresh();
}
getch();
clear();
}
I've read that the default colors can't be changed, but only refers to COLOR_BLACK, etc (0-7).
Where are these 256 default colors defined and why can't I change them? If they can't be changed, I could make use of the colors defined, but only if I can rely on them being the same on any 256-color capable terminal.

short: PuTTY doesn't do that, ncurses can't tell if PuTTY can...
long:
In ncurses, the init_color function checks its parameters (in the example given, those appear okay if your $TERM is "xterm-256color"), as well as checking if the terminal description has the initc (initialize_color) capability. If that is missing or cancelled, ncurses returns an error.
However, that's only the terminal description. ncurses cannot tell if you have chosen an incorrect or inappropriate terminal description.
In a quick check, PuTTY doesn't respond to the control sequence which is used in initc. This is a known limitation, as indicated in the (more appropriate) terminal description putty-256color provided by ncurses:
putty-256color|PuTTY 0.58 with xterm 256-colors,
use=xterm+256setaf, use=putty,
That xterm+256setaf is used for terminals whose palette is hard-coded. PuTTY is not the only terminal which both sets TERM=xterm` and lacks the ability to change its palette. If you happen to be using an old version of the terminal database, you may be misled, since that error was fixed in 2014:
# 2014-03-30
# * cancel ccc in putty-256color and konsole-256color for consistency
# with the cancelled initc capability (patch by Sven Zuhlsdorf).
# * add xterm+256setaf building block for various terminals which only
# get the 256-color feature half-implemented -TD
# * updated "st" entry (leaving the 0.1.1 version as "simpleterm") to
# 0.4.1 -TD
#
Like the other terminals whose developers set TERM=xterm (or TERM=xterm-256color), there are differences between those and xterm.
Further reading:
Why not just use TERM set to "xterm"?

Couple of things I discovered. First, yes I was apparently referencing an old putty-256color terminfo that had "ccc", allowing can_change_color() to succeed, but then init_color() would fail. But the same Putty window using "xterm-256color" would init_color() OK and color_content() even shows the new values, but nothing changed on the screen. What was really confusing is sometimes the colors I set would appear and other times seemingly random colors appeared instead.
Here's what I found:
putty-256color xterm-256color gnome-256color xterm-256color
(putty) (putty) (gnome-terminal) (MobaXterm)
-------------- -------------- ---------------- --------------
change_color OK/ERR OK OK OK
init_color ERR ERR OK OK
color_content ERR OK/NOCH OK OK
color changed? NO NO YES YES
So there's basically no way to determine whether colors can be changed or not. But I did find that every terminal had already defined the standard 256 xterm colors, whether they could be changed or not. So, now, I just define the colors I want to use using the same color numbers as in the xterm palette. That way, the colors I expect will appear whether I needed to define them or not. So, to use "PaleGreen3", I just use:
init_color(77, 372, 843, 372)
If it works, it works, and if not, its probably already defined. For reference, I converting all the Xwindow/xterm colors from GUI hex notation to the ncurses (0-1000) values:
# Name Tk Ncurses
--- ---------------- ------- -------------
16 Grey0 #000000 0,0,0
17 NavyBlue #00005f 0,0,372
18 DarkBlue #000087 0,0,529
19 Blue3 #0000af 0,0,686
20 Blue3 #0000d7 0,0,843
21 Blue1 #0000ff 0,0,1000
22 DarkGreen #005f00 0,372,0
23 DeepSkyBlue4 #005f5f 0,372,372
24 DeepSkyBlue4 #005f87 0,372,529
25 DeepSkyBlue4 #005faf 0,372,686
26 DodgerBlue3 #005fd7 0,372,843
27 DodgerBlue2 #005fff 0,372,1000
28 Green4 #008700 0,529,0
29 SpringGreen4 #00875f 0,529,372
30 Turquoise4 #008787 0,529,529
31 DeepSkyBlue3 #0087af 0,529,686
32 DeepSkyBlue3 #0087d7 0,529,843
33 DodgerBlue1 #0087ff 0,529,1000
34 Green3 #00af00 0,686,0
35 SpringGreen3 #00af5f 0,686,372
36 DarkCyan #00af87 0,686,529
37 LightSeaGreen #00afaf 0,686,686
38 DeepSkyBlue2 #00afd7 0,686,843
39 DeepSkyBlue1 #00afff 0,686,1000
40 Green3 #00d700 0,843,0
41 SpringGreen3 #00d75f 0,843,372
42 SpringGreen2 #00d787 0,843,529
43 Cyan3 #00d7af 0,843,686
44 DarkTurquoise #00d7d7 0,843,843
45 Turquoise2 #00d7ff 0,843,1000
46 Green1 #00ff00 0,1000,0
47 SpringGreen2 #00ff5f 0,1000,372
48 SpringGreen1 #00ff87 0,1000,529
49 MediumSpringGreen #00ffaf 0,1000,686
50 Cyan2 #00ffd7 0,1000,843
51 Cyan1 #00ffff 0,1000,1000
52 DarkRed #5f0000 372,0,0
53 DeepPink4 #5f005f 372,0,372
54 Purple4 #5f0087 372,0,529
55 Purple4 #5f00af 372,0,686
56 Purple3 #5f00d7 372,0,843
57 BlueViolet #5f00ff 372,0,1000
58 Orange4 #5f5f00 372,372,0
59 Grey37 #5f5f5f 372,372,372
60 MediumPurple4 #5f5f87 372,372,529
61 SlateBlue3 #5f5faf 372,372,686
62 SlateBlue3 #5f5fd7 372,372,843
63 RoyalBlue1 #5f5fff 372,372,1000
64 Chartreuse4 #5f8700 372,529,0
65 DarkSeaGreen4 #5f875f 372,529,372
66 PaleTurquoise4 #5f8787 372,529,529
67 SteelBlue #5f87af 372,529,686
68 SteelBlue3 #5f87d7 372,529,843
69 CornflowerBlue #5f87ff 372,529,1000
70 Chartreuse3 #5faf00 372,686,0
71 DarkSeaGreen4 #5faf5f 372,686,372
72 CadetBlue #5faf87 372,686,529
73 CadetBlue #5fafaf 372,686,686
74 SkyBlue3 #5fafd7 372,686,843
75 SteelBlue1 #5fafff 372,686,1000
76 Chartreuse3 #5fd700 372,843,0
77 PaleGreen3 #5fd75f 372,843,372
78 SeaGreen3 #5fd787 372,843,529
79 Aquamarine3 #5fd7af 372,843,686
80 MediumTurquoise #5fd7d7 372,843,843
81 SteelBlue1 #5fd7ff 372,843,1000
82 Chartreuse2 #5fff00 372,1000,0
83 SeaGreen2 #5fff5f 372,1000,372
84 SeaGreen1 #5fff87 372,1000,529
85 SeaGreen1 #5fffaf 372,1000,686
86 Aquamarine1 #5fffd7 372,1000,843
87 DarkSlateGray2 #5fffff 372,1000,1000
88 DarkRed #870000 529,0,0
89 DeepPink4 #87005f 529,0,372
90 DarkMagenta #870087 529,0,529
91 DarkMagenta #8700af 529,0,686
92 DarkViolet #8700d7 529,0,843
93 Purple #8700ff 529,0,1000
94 Orange4 #875f00 529,372,0
95 LightPink4 #875f5f 529,372,372
96 Plum4 #875f87 529,372,529
97 MediumPurple3 #875faf 529,372,686
98 MediumPurple3 #875fd7 529,372,843
99 SlateBlue1 #875fff 529,372,1000
100 Yellow4 #878700 529,529,0
101 Wheat4 #87875f 529,529,372
102 Grey53 #878787 529,529,529
103 LightSlateGrey #8787af 529,529,686
104 MediumPurple #8787d7 529,529,843
105 LightSlateBlue #8787ff 529,529,1000
106 Yellow4 #87af00 529,686,0
107 DarkOliveGreen3 #87af5f 529,686,372
108 DarkSeaGreen #87af87 529,686,529
109 LightSkyBlue3 #87afaf 529,686,686
110 LightSkyBlue3 #87afd7 529,686,843
111 SkyBlue2 #87afff 529,686,1000
112 Chartreuse2 #87d700 529,843,0
113 DarkOliveGreen3 #87d75f 529,843,372
114 PaleGreen3 #87d787 529,843,529
115 DarkSeaGreen3 #87d7af 529,843,686
116 DarkSlateGray3 #87d7d7 529,843,843
117 SkyBlue1 #87d7ff 529,843,1000
118 Chartreuse1 #87ff00 529,1000,0
119 LightGreen #87ff5f 529,1000,372
120 LightGreen #87ff87 529,1000,529
121 PaleGreen1 #87ffaf 529,1000,686
122 Aquamarine1 #87ffd7 529,1000,843
123 DarkSlateGray1 #87ffff 529,1000,1000
124 Red3 #af0000 686,0,0
125 DeepPink4 #af005f 686,0,372
126 MediumVioletRed #af0087 686,0,529
127 Magenta3 #af00af 686,0,686
128 DarkViolet #af00d7 686,0,843
129 Purple #af00ff 686,0,1000
130 DarkOrange3 #af5f00 686,372,0
131 IndianRed #af5f5f 686,372,372
132 HotPink3 #af5f87 686,372,529
133 MediumOrchid3 #af5faf 686,372,686
134 MediumOrchid #af5fd7 686,372,843
135 MediumPurple2 #af5fff 686,372,1000
136 DarkGoldenrod #af8700 686,529,0
137 LightSalmon3 #af875f 686,529,372
138 RosyBrown #af8787 686,529,529
139 Grey63 #af87af 686,529,686
140 MediumPurple2 #af87d7 686,529,843
141 MediumPurple1 #af87ff 686,529,1000
142 Gold3 #afaf00 686,686,0
143 DarkKhaki #afaf5f 686,686,372
144 NavajoWhite3 #afaf87 686,686,529
145 Grey69 #afafaf 686,686,686
146 LightSteelBlue3 #afafd7 686,686,843
147 LightSteelBlue #afafff 686,686,1000
148 Yellow3 #afd700 686,843,0
149 DarkOliveGreen3 #afd75f 686,843,372
150 DarkSeaGreen3 #afd787 686,843,529
151 DarkSeaGreen2 #afd7af 686,843,686
152 LightCyan3 #afd7d7 686,843,843
153 LightSkyBlue1 #afd7ff 686,843,1000
154 GreenYellow #afff00 686,1000,0
155 DarkOliveGreen2 #afff5f 686,1000,372
156 PaleGreen1 #afff87 686,1000,529
157 DarkSeaGreen2 #afffaf 686,1000,686
158 DarkSeaGreen1 #afffd7 686,1000,843
159 PaleTurquoise1 #afffff 686,1000,1000
160 Red3 #d70000 843,0,0
161 DeepPink3 #d7005f 843,0,372
162 DeepPink3 #d70087 843,0,529
163 Magenta3 #d700af 843,0,686
164 Magenta3 #d700d7 843,0,843
165 Magenta2 #d700ff 843,0,1000
166 DarkOrange3 #d75f00 843,372,0
167 IndianRed #d75f5f 843,372,372
168 HotPink3 #d75f87 843,372,529
169 HotPink2 #d75faf 843,372,686
170 Orchid #d75fd7 843,372,843
171 MediumOrchid1 #d75fff 843,372,1000
172 Orange3 #d78700 843,529,0
173 LightSalmon3 #d7875f 843,529,372
174 LightPink3 #d78787 843,529,529
175 Pink3 #d787af 843,529,686
176 Plum3 #d787d7 843,529,843
177 Violet #d787ff 843,529,1000
178 Gold3 #d7af00 843,686,0
179 LightGoldenrod3 #d7af5f 843,686,372
180 Tan #d7af87 843,686,529
181 MistyRose3 #d7afaf 843,686,686
182 Thistle3 #d7afd7 843,686,843
183 Plum2 #d7afff 843,686,1000
184 Yellow3 #d7d700 843,843,0
185 Khaki3 #d7d75f 843,843,372
186 LightGoldenrod2 #d7d787 843,843,529
187 LightYellow3 #d7d7af 843,843,686
188 Grey84 #d7d7d7 843,843,843
189 LightSteelBlue1 #d7d7ff 843,843,1000
190 Yellow2 #d7ff00 843,1000,0
191 DarkOliveGreen1 #d7ff5f 843,1000,372
192 DarkOliveGreen1 #d7ff87 843,1000,529
193 DarkSeaGreen1 #d7ffaf 843,1000,686
194 Honeydew2 #d7ffd7 843,1000,843
195 LightCyan1 #d7ffff 843,1000,1000
196 Red1 #ff0000 1000,0,0
197 DeepPink2 #ff005f 1000,0,372
198 DeepPink1 #ff0087 1000,0,529
199 DeepPink1 #ff00af 1000,0,686
200 Magenta2 #ff00d7 1000,0,843
201 Magenta1 #ff00ff 1000,0,1000
202 OrangeRed1 #ff5f00 1000,372,0
203 IndianRed1 #ff5f5f 1000,372,372
204 IndianRed1 #ff5f87 1000,372,529
205 HotPink #ff5faf 1000,372,686
206 HotPink #ff5fd7 1000,372,843
207 MediumOrchid1 #ff5fff 1000,372,1000
208 DarkOrange #ff8700 1000,529,0
209 Salmon1 #ff875f 1000,529,372
210 LightCoral #ff8787 1000,529,529
211 PaleVioletRed1 #ff87af 1000,529,686
212 Orchid2 #ff87d7 1000,529,843
213 Orchid1 #ff87ff 1000,529,1000
214 Orange1 #ffaf00 1000,686,0
215 SandyBrown #ffaf5f 1000,686,372
216 LightSalmon1 #ffaf87 1000,686,529
217 LightPink1 #ffafaf 1000,686,686
218 Pink1 #ffafd7 1000,686,843
219 Plum1 #ffafff 1000,686,1000
220 Gold1 #ffd700 1000,843,0
221 LightGoldenrod2 #ffd75f 1000,843,372
222 LightGoldenrod2 #ffd787 1000,843,529
223 NavajoWhite1 #ffd7af 1000,843,686
224 MistyRose1 #ffd7d7 1000,843,843
225 Thistle1 #ffd7ff 1000,843,1000
226 Yellow1 #ffff00 1000,1000,0
227 LightGoldenrod1 #ffff5f 1000,1000,372
228 Khaki1 #ffff87 1000,1000,529
229 Wheat1 #ffffaf 1000,1000,686
230 Cornsilk1 #ffffd7 1000,1000,843
231 Grey100 #ffffff 1000,1000,1000
232 Grey3 #080808 31,31,31
233 Grey7 #121212 70,70,70
234 Grey11 #1c1c1c 109,109,109
235 Grey15 #262626 149,149,149
236 Grey19 #303030 188,188,188
237 Grey23 #3a3a3a 227,227,227
238 Grey27 #444444 266,266,266
239 Grey30 #4e4e4e 305,305,305
240 Grey35 #585858 345,345,345
241 Grey39 #626262 384,384,384
242 Grey42 #6c6c6c 423,423,423
243 Grey46 #767676 462,462,462
244 Grey50 #808080 501,501,501
245 Grey54 #8a8a8a 541,541,541
246 Grey58 #949494 580,580,580
247 Grey62 #9e9e9e 619,619,619
248 Grey66 #a8a8a8 658,658,658
249 Grey70 #b2b2b2 698,698,698
250 Grey74 #bcbcbc 737,737,737
251 Grey78 #c6c6c6 776,776,776
252 Grey82 #d0d0d0 815,815,815
253 Grey85 #dadada 854,854,854
254 Grey89 #e4e4e4 894,894,894
255 Grey93 #eeeeee 933,933,933

Related

Win Error 5 has occurred when I tried to execute Pytorch code

I'm new to Anaconda. I tried to execute Pytorch Adversarial Neural Network in anaconda. It shows some error that I have no clue. Here is the code that downloads dataset
# MNIST Test dataset and dataloader declaration
test_loader = torch.utils.data.DataLoader(datasets.MNIST('../data', train=False, download=True, transform=transforms.Compose([
transforms.ToTensor(),])),batch_size=1, shuffle=True)
This is the error message I got :
PermissionError Traceback (most recent call last)
<ipython-input-4-59310f6a37f8> in <module>
41
42 # MNIST Test dataset and dataloader declaration
43 test_loader = torch.utils.data.DataLoader(datasets.MNIST('../data', train=False, download=True, transform=transforms.Compose([transforms.ToTensor(),])),batch_size=1, shuffle=True)
44
45 # Define what device we are using
~\anaconda3\lib\site-packages\torchvision\datasets\mnist.py in __init__(self, root,
train,
transform, target_transform, download)
77
78 if download:
79 self.download()
80
81 if not self._check_exists():
~\anaconda3\lib\site-packages\torchvision\datasets\mnist.py in download(self)
138 return
139
140 os.makedirs(self.raw_folder, exist_ok=True)
141 os.makedirs(self.processed_folder, exist_ok=True)
142
~\anaconda3\lib\os.py in makedirs(name, mode, exist_ok)
211 if head and tail and not path.exists(head):
212 try:
213 makedirs(head, exist_ok=exist_ok)
214 except FileExistsError:
215 # Defeats race condition when another thread created the path
~\anaconda3\lib\os.py in makedirs(name, mode, exist_ok)
211 if head and tail and not path.exists(head):
212 try:
213 makedirs(head, exist_ok=exist_ok)
214 except FileExistsError:
215 # Defeats race condition when another thread created the path
~\anaconda3\lib\os.py in makedirs(name, mode, exist_ok)
221 return
222 try:
223 mkdir(name, mode)
224 except OSError:
225 # Cannot rely on checking for EEXIST, since the operating system
PermissionError: [WinError 5] Access is denied: '../data' .
How about changing the '../data' to another directory, like '/Users/***/Downloads/data' or somewhere else.

What solution should I use to generate a list of all possible alphabetic combinaisons?

I want to generate a list of all the possible combinations of the following characters with a minimum length of 3 characters and a maximum length of 12 characters.
abcdefghijklmnopqrstuvwxyz1234567890_
I though of using PHP to do so this but this operation requires too much memory. What would be the best tool to achieve this?
It would be better if you set a limit on each run; For example all possibilities with 5 characters in one run, and all with 7 in another. And write a code to send the output after each run to a text file so you have all the possibilities and
That would take less memory.
example with numbers in python:
# 1 2 3 4 5 6 7 8 9 0
listx=[1,2,3,4,5,6,7,8,9,0]
#one letter
for i in listx:
print(i)
#two letters
for i in listx:
for j in listx:
print(f"{i}{j}")
and it goes on and on...
output=>
1
2
3
4
5
6
7
8
9
0
11
12
13
14
15
16
17
18
19
10
21
22
23
24
25
26
27
28
29
20
31
32
33
34
35
36
37
38
39
30
41
42
43
44
45
46
47
48
49
40
51
52
53
54
55
56
57
58
59
50
61
62
63
64
65
66
67
68
69
60
71
72
73
74
75
76
77
78
79
70
81
82
83
84
85
86
87
88
89
80
91
92
93
94
95
96
97
98
99
90
01
02
03
04
05
06
07
08
09
00
In python, there is a function itertools.product which returns the combinations you want for a fixed number of characters. You can call it repeatedly to get each number of characters between 3 and 12.
def get_combinations(charset, begin, end):
result = []
for i in range(begin, end+1):
result.extend(''.join(p) for p in itertools.product(charset, repeat=i))
return result
print(get_combinations('abcdefghijklmnopqrstuvwxyz0123456789_', 3, 5))
# ['aaa', 'aab', 'aac', 'aad', 'aae', 'aaf', 'aag', 'aah', 'aai', 'aaj', 'aak', 'aal', 'aam', 'aan', 'aao', 'aap', 'aaq', 'aar', 'aas', 'aat', 'aau', 'aav', 'aaw', 'aax', 'aay', 'aaz', 'aa0', 'aa1', 'aa2', 'aa3', 'aa4', 'aa5', 'aa6', 'aa7', 'aa8', 'aa9', 'aa_', 'aba', 'abb', 'abc', 'abd', 'abe', 'abf', 'abg', 'abh', 'abi', 'abj', 'abk', 'abl', 'abm', 'abn', 'abo', 'abp', 'abq', 'abr', 'abs', 'abt', 'abu', 'abv', 'abw', 'abx', 'aby', 'abz', 'ab0', 'ab1', 'ab2', 'ab3', 'ab4', 'ab5', 'ab6', 'ab7', 'ab8', 'ab9', 'ab_', 'aca', 'acb', 'acc', 'acd', 'ace', 'acf', 'acg', 'ach', 'aci', 'acj', 'ack', 'acl', 'acm', 'acn', 'aco', 'acp', 'acq', 'acr', 'acs', 'act', 'acu', 'acv', 'acw', 'acx', 'acy', 'acz', 'ac0', 'ac1', 'ac2', 'ac3', 'ac4', 'ac5', 'ac6', 'ac7', 'ac8', 'ac9', 'ac_', 'ada', 'adb', 'adc', 'add', 'ade', 'adf', 'adg', 'adh', 'adi', 'adj', 'adk', 'adl', 'adm', 'adn', 'ado', 'adp', 'adq', 'adr', 'ads', 'adt', 'adu', 'adv', 'adw', 'adx', 'ady', 'adz', 'ad0', 'ad1', 'ad2', 'ad3', 'ad4', 'ad5', 'ad6', 'ad7', 'ad8', 'ad9', 'ad_', 'aea', 'aeb', 'aec', 'aed', 'aee', 'aef', 'aeg', ..., '__o0', '__o1', '__o2', '__o3', '__o4', '__o5', '__o6', '__o7', '__o8', '__o9', '__o_', '__pa', '__pb', '__pc', '__pd', '__pe', '__pf', '__pg', '__ph', '__pi', '__pj', '__pk', '__pl', '__pm', '__pn', '__po', '__pp', '__pq', '__pr', '__ps', '__pt', '__pu', '__pv', '__pw', '__px', '__py', '__pz', '__p0', '__p1', '__p2', '__p3', '__p4', '__p5', '__p6', '__p7', '__p8', '__p9', '__p_', '__qa', '__qb', '__qc', '__qd', '__qe', '__qf', '__qg', '__qh', '__qi', '__qj', '__qk', '__ql', '__qm', '__qn', '__qo', '__qp', '__qq', '__qr', '__qs', '__qt', '__qu', '__qv', '__qw', '__qx', '__qy', '__qz', '__q0', '__q1', '__q2', '__q3', '__q4', '__q5', '__q6', '__q7', '__q8', '__q9', '__q_', '__ra', '__rb', '__rc', '__rd', '__re', '__rf', '__rg', '__rh', '__ri', '__rj', '__rk', '__rl', '__rm', '__rn', '__ro', '__rp', '__rq', '__rr', '__rs', '__rt', '__ru', '__rv', '__rw', '__rx', '__ry', '__rz', '__r0', '__r1', '__r2', '__r3', '__r4', '__r5', '__r6', '__r7', '__r8', '__r9', '__r_', '__sa', '__sb', '__sc', '__sd', '__se', '__sf', '__sg', '__sh', '__si', '__sj', '__sk', '__sl', '__sm', '__sn', '__so', '__sp', '__sq', '__sr', '__ss', '__st', '__su', '__sv', '__sw', '__sx', '__sy', '__sz', '__s0', '__s1', '__s2', '__s3', '__s4', '__s5', '__s6', '__s7', '__s8', '__s9', '__s_', '__ta', '__tb', '__tc', '__td', '__te', '__tf', '__tg', '__th', '__ti', '__tj', '__tk', '__tl', '__tm', '__tn', '__to', '__tp', '__tq', '__tr', '__ts', '__tt', '__tu', '__tv', '__tw', '__tx', '__ty', '__tz', '__t0', '__t1', '__t2', '__t3', '__t4', '__t5', '__t6', '__t7', '__t8', '__t9', '__t_', '__ua', '__ub', '__uc', '__ud', '__ue', '__uf', '__ug', '__uh', '__ui', '__uj', '__uk', '__ul', '__um', '__un', '__uo', '__up', '__uq', '__ur', '__us', '__ut', '__uu', '__uv', '__uw', '__ux', '__uy', '__uz', '__u0', '__u1', '__u2', '__u3', '__u4', '__u5', '__u6', '__u7', '__u8', '__u9', '__u_', '__va', '__vb', '__vc', '__vd', '__ve', '__vf', '__vg', '__vh', '__vi', '__vj', '__vk', '__vl', '__vm', '__vn', '__vo', '__vp', '__vq', '__vr', '__vs', '__vt', '__vu', '__vv', '__vw', '__vx', '__vy', '__vz', '__v0', '__v1', '__v2', '__v3', '__v4', '__v5', '__v6', '__v7', '__v8', '__v9', '__v_', '__wa', '__wb', '__wc', '__wd', '__we', '__wf', '__wg', '__wh', '__wi', '__wj', '__wk', '__wl', '__wm', '__wn', '__wo', '__wp', '__wq', '__wr', '__ws', '__wt', '__wu', '__wv', '__ww', '__wx', '__wy', '__wz', '__w0', '__w1', '__w2', '__w3', '__w4', '__w5', '__w6', '__w7', '__w8', '__w9', '__w_', '__xa', '__xb', '__xc', '__xd', '__xe', '__xf', '__xg', '__xh', '__xi', '__xj', '__xk', '__xl', '__xm', '__xn', '__xo', '__xp', '__xq', '__xr', '__xs', '__xt', '__xu', '__xv', '__xw', '__xx', '__xy', '__xz', '__x0', '__x1', '__x2', '__x3', '__x4', '__x5', '__x6', '__x7', '__x8', '__x9', '__x_', '__ya', '__yb', '__yc', '__yd', '__ye', '__yf', '__yg', '__yh', '__yi', '__yj', '__yk', '__yl', '__ym', '__yn', '__yo', '__yp', '__yq', '__yr', '__ys', '__yt', '__yu', '__yv', '__yw', '__yx', '__yy', '__yz', '__y0', '__y1', '__y2', '__y3', '__y4', '__y5', '__y6', '__y7', '__y8', '__y9', '__y_', '__za', '__zb', '__zc', '__zd', '__ze', '__zf', '__zg', '__zh', '__zi', '__zj', '__zk', '__zl', '__zm', '__zn', '__zo', '__zp', '__zq', '__zr', '__zs', '__zt', '__zu', '__zv', '__zw', '__zx', '__zy', '__zz', '__z0', '__z1', '__z2', '__z3', '__z4', '__z5', '__z6', '__z7', '__z8', '__z9', '__z_', '__0a', '__0b', '__0c', '__0d', '__0e', '__0f', '__0g', '__0h', '__0i', '__0j', '__0k', '__0l', '__0m', '__0n', '__0o', '__0p', '__0q', '__0r', '__0s', '__0t', '__0u', '__0v', '__0w', '__0x', '__0y', '__0z', '__00', '__01', '__02', '__03', '__04', '__05', '__06', '__07', '__08', '__09', '__0_', '__1a', '__1b', '__1c', '__1d', '__1e', '__1f', '__1g', '__1h', '__1i', '__1j', '__1k', '__1l', '__1m', '__1n', '__1o', '__1p', '__1q', '__1r', '__1s', '__1t', '__1u', '__1v', '__1w', '__1x', '__1y', '__1z', '__10', '__11', '__12', '__13', '__14', '__15', '__16', '__17', '__18', '__19', '__1_', '__2a', '__2b', '__2c', '__2d', '__2e', '__2f', '__2g', '__2h', '__2i', '__2j', '__2k', '__2l', '__2m', '__2n', '__2o', '__2p', '__2q', '__2r', '__2s', '__2t', '__2u', '__2v', '__2w', '__2x', '__2y', '__2z', '__20', '__21', '__22', '__23', '__24', '__25', '__26', '__27', '__28', '__29', '__2_', '__3a', '__3b', '__3c', '__3d', '__3e', '__3f', '__3g', '__3h', '__3i', '__3j', '__3k', '__3l', '__3m', '__3n', '__3o', '__3p', '__3q', '__3r', '__3s', '__3t', '__3u', '__3v', '__3w', '__3x', '__3y', '__3z', '__30', '__31', '__32', '__33', '__34', '__35', '__36', '__37', '__38', '__39', '__3_', '__4a', '__4b', '__4c', '__4d', '__4e', '__4f', '__4g', '__4h', '__4i', '__4j', '__4k', '__4l', '__4m', '__4n', '__4o', '__4p', '__4q', '__4r', '__4s', '__4t', '__4u', '__4v', '__4w', '__4x', '__4y', '__4z', '__40', '__41', '__42', '__43', '__44', '__45', '__46', '__47', '__48', '__49', '__4_', '__5a', '__5b', '__5c', '__5d', '__5e', '__5f', '__5g', '__5h', '__5i', '__5j', '__5k', '__5l', '__5m', '__5n', '__5o', '__5p', '__5q', '__5r', '__5s', '__5t', '__5u', '__5v', '__5w', '__5x', '__5y', '__5z', '__50', '__51', '__52', '__53', '__54', '__55', '__56', '__57', '__58', '__59', '__5_', '__6a', '__6b', '__6c', '__6d', '__6e', '__6f', '__6g', '__6h', '__6i', '__6j', '__6k', '__6l', '__6m', '__6n', '__6o', '__6p', '__6q', '__6r', '__6s', '__6t', '__6u', '__6v', '__6w', '__6x', '__6y', '__6z', '__60', '__61', '__62', '__63', '__64', '__65', '__66', '__67', '__68', '__69', '__6_', '__7a', '__7b', '__7c', '__7d', '__7e', '__7f', '__7g', '__7h', '__7i', '__7j', '__7k', '__7l', '__7m', '__7n', '__7o', '__7p', '__7q', '__7r', '__7s', '__7t', '__7u', '__7v', '__7w', '__7x', '__7y', '__7z', '__70', '__71', '__72', '__73', '__74', '__75', '__76', '__77', '__78', '__79', '__7_', '__8a', '__8b', '__8c', '__8d', '__8e', '__8f', '__8g', '__8h', '__8i', '__8j', '__8k', '__8l', '__8m', '__8n', '__8o', '__8p', '__8q', '__8r', '__8s', '__8t', '__8u', '__8v', '__8w', '__8x', '__8y', '__8z', '__80', '__81', '__82', '__83', '__84', '__85', '__86', '__87', '__88', '__89', '__8_', '__9a', '__9b', '__9c', '__9d', '__9e', '__9f', '__9g', '__9h', '__9i', '__9j', '__9k', '__9l', '__9m', '__9n', '__9o', '__9p', '__9q', '__9r', '__9s', '__9t', '__9u', '__9v', '__9w', '__9x', '__9y', '__9z', '__90', '__91', '__92', '__93', '__94', '__95', '__96', '__97', '__98', '__99', '__9_', '___a', '___b', '___c', '___d', '___e', '___f', '___g', '___h', '___i', '___j', '___k', '___l', '___m', '___n', '___o', '___p', '___q', '___r', '___s', '___t', '___u', '___v', '___w', '___x', '___y', '___z', '___0', '___1', '___2', '___3', '___4', '___5', '___6', '___7', '___8', '___9', '____']
Note how I called the function with parameters 3 and 5 instead of 3 and 12. With parameters 3 and 5, the number of combinations is already 71268771. Over 71 millions. With parameters 3 and 12, the number of combinations would be 6765811783780034854. That's 6.8 * 10**18. This is nearly one thousand million times the number of humans on Earth.

Apk unzipping. Not a valid zip file, but unzip worked perfect

I have problem with golang zip reader. We have apk builder which build apk and then encrypted this apk with dex protector.
When i try to open apk file, go return err "zip: not a valid zip file". But when i try to open with unzip or zipinfo, worked fine.
(Also I noticed something interesting: in php 5.5 apk file opened with ZipArchive fine, but in 5.6 return error like golang)
I try open to debug golang archive/zip pckage and found that error returned in this line https://github.com/golang/go/blob/master/src/archive/zip/reader.go#L269.
Then i try to debug this line like this:
fmt.Printf("%+v", f)
fmt.Println(
"len(f.Extra):", len(f.Extra),
"len(b):", len(b),
"tag:", tag,
"size:", size,
)
And have this results:
&{FileHeader:{
Name:META-INF/MANIFEST.MF CreatorVersion:20 ReaderVersion:20 Flags:2056 Method:8
ModifiedTime:23093 ModifiedDate:18230 CRC32:2569174240
CompressedSize:359 UncompressedSize:570 CompressedSize64:359 UncompressedSize64:570
Extra:[] ExternalAttrs:0 Comment:
} zipr:0xc208038038 zipsize:276893 headerOffset:0}
&{FileHeader:{
Name:res/drawable/ic_launcher.png CreatorVersion:10 ReaderVersion:10 Flags:2048 Method:0
ModifiedTime:22030 ModifiedDate:18230 CRC32:2310989215
CompressedSize:20418 UncompressedSize:20418 CompressedSize64:20418 UncompressedSize64:20418
Extra:[] ExternalAttrs:0 Comment:
} zipr:0xc208038038 zipsize:276893 headerOffset:2066}
...
---------------->PROBLEM HERE:-------------------=>
&{FileHeader:{
Name:AndroidManifest.xml CreatorVersion:10 ReaderVersion:10 Flags:2048 Method:0
ModifiedTime:22030 ModifiedDate:18230 CRC32:1929033187
CompressedSize:7268 UncompressedSize:7268 CompressedSize64:7268 UncompressedSize64:7268
Extra:[204 94 136 27 148 14 49 95 154 4 231 53 127 242 4 199 243 207 229 161 103 90 116 69 45 31 54 220 113 43 172 4 159 109 211 57 217 2 161 17 196 16 168 19 174 138 107 15 36 181 223 22 15 21 106 153]
ExternalAttrs:0 Comment:
} zipr:0xc208038038 zipsize:276893 headerOffset:22954}
len(f.Extra): 56
len(b): 52
tag: 24268
size: 7048
Problem in extra headers (i think this extra headers add dex protector when encrypt apk). Size more then length of extra bytes.
But unzip util and ZipArchive in php5.5 woked perfect with this extras. How to fix this ?
I want to rewrite this piece in go archive/zip package, so that the extras do not interfere golang zip reader.
It's very important for me, because i rewrite build apk from php to golang and I came across a problem that can not decide :(. Please help me.

Calculation of application speedup using gnuplot and awk

Here's the problem:
Speedup formula: S(p) = T(1)/T(p) = (avg time for one process / avg time for p processes)
There are 5 logs, from which one wants to extract the information.
cg.B.1.log contains the execution times for one process, so we do the calculation of the average time to obtain T(1). The other log files contain the execution times for 2, 4, 8 and 16 processes. Averages of those times must also be calculated, since they are T(p).
Here's the code that calculates the averages:
tavg(n) = "awk 'BEGIN { FS = \"[ \\t]*=[ \\t]*\" } /Time in seconds/ { s += $2; c++ } /Total processes/ { if (! CP) CP = $2 } END { print s/c }' cg.B.".n.".log ".(n == 1 ? ">" : ">>")." tavg.dat;"
And the code that calculates the speedup:
system "awk 'NR==1{n=$0} {print n/$0}' tavg.dat > speedup.dat;"
How do I combine those two commands so that the output 'speedup.dat' is produced directly without using file tavg.dat?
Here are the contents of files, the structure of all log files is identical. I attached only the first two executions for abbreviation purposes.
cg.B.1.log
-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-
Start in 16:45:15--25/12/2014
NAS Parallel Benchmarks 3.3 -- CG Benchmark
Size: 75000
Iterations: 75
Number of active processes: 1
Number of nonzeroes per row: 13
Eigenvalue shift: .600E+02
iteration ||r|| zeta
1 0.30354859861452E-12 59.9994751578754
2 0.11186435488267E-14 21.7627846142536
3 0.11312258511928E-14 22.2876617043224
4 0.11222160585284E-14 22.5230738188346
5 0.11244234177219E-14 22.6275390653892
6 0.11330434819384E-14 22.6740259189533
7 0.11334259623050E-14 22.6949056826251
8 0.11374839313647E-14 22.7044023166872
9 0.11424877443039E-14 22.7087834345620
10 0.11329475190566E-14 22.7108351397177
11 0.11337364093482E-14 22.7118107121341
12 0.11379928308864E-14 22.7122816240971
13 0.11369453681794E-14 22.7125122663243
14 0.11430390337015E-14 22.7126268007594
15 0.11400318886400E-14 22.7126844161819
16 0.11352091331197E-14 22.7127137461755
17 0.11350923439124E-14 22.7127288402000
18 0.11475378864565E-14 22.7127366848296
19 0.11366777929028E-14 22.7127407981217
20 0.11274243312504E-14 22.7127429721364
21 0.11353930792856E-14 22.7127441294025
22 0.11299685800278E-14 22.7127447493900
23 0.11296405041170E-14 22.7127450834533
24 0.11381975597887E-14 22.7127452643881
25 0.11328127301663E-14 22.7127453628451
26 0.11367332658939E-14 22.7127454166517
27 0.11283372178605E-14 22.7127454461696
28 0.11384734158863E-14 22.7127454624211
29 0.11394011989719E-14 22.7127454713974
30 0.11354294067640E-14 22.7127454763703
31 0.11412988029103E-14 22.7127454791343
32 0.11358088407717E-14 22.7127454806740
33 0.11263266152515E-14 22.7127454815316
34 0.11275183080286E-14 22.7127454820131
35 0.11328306951409E-14 22.7127454822840
36 0.11357880314891E-14 22.7127454824349
37 0.11332687790488E-14 22.7127454825202
38 0.11324108818137E-14 22.7127454825684
39 0.11365065523777E-14 22.7127454825967
40 0.11361185361321E-14 22.7127454826116
41 0.11276519820716E-14 22.7127454826202
42 0.11317183424878E-14 22.7127454826253
43 0.11236007481770E-14 22.7127454826276
44 0.11304065564684E-14 22.7127454826296
45 0.11287791356431E-14 22.7127454826310
46 0.11297028000133E-14 22.7127454826310
47 0.11281236869666E-14 22.7127454826314
48 0.11277254075548E-14 22.7127454826317
49 0.11320327289847E-14 22.7127454826309
50 0.11287655285563E-14 22.7127454826321
51 0.11230503422400E-14 22.7127454826324
52 0.11292089094944E-14 22.7127454826313
53 0.11366728396408E-14 22.7127454826315
54 0.11222618466968E-14 22.7127454826310
55 0.11278193276516E-14 22.7127454826315
56 0.11244624896030E-14 22.7127454826316
57 0.11264508872685E-14 22.7127454826318
58 0.11255583774760E-14 22.7127454826314
59 0.11227129146723E-14 22.7127454826314
60 0.11189480800173E-14 22.7127454826318
61 0.11163241472678E-14 22.7127454826315
62 0.11278839424218E-14 22.7127454826318
63 0.11226804133008E-14 22.7127454826313
64 0.11222456601361E-14 22.7127454826317
65 0.11270879524310E-14 22.7127454826308
66 0.11303771390006E-14 22.7127454826319
67 0.11240101357287E-14 22.7127454826319
68 0.11240278884391E-14 22.7127454826321
69 0.11207748067718E-14 22.7127454826317
70 0.11178755187571E-14 22.7127454826327
71 0.11195935245649E-14 22.7127454826313
72 0.11260715126337E-14 22.7127454826322
73 0.11281677964997E-14 22.7127454826316
74 0.11162340034815E-14 22.7127454826318
75 0.11208709203921E-14 22.7127454826310
Benchmark completed
VERIFICATION SUCCESSFUL
Zeta is 0.2271274548263E+02
Error is 0.3128387698896E-15
CG Benchmark Completed.
Class = B
Size = 75000
Iterations = 75
Time in seconds = 88.72
Total processes = 1
Compiled procs = 1
Mop/s total = 616.64
Mop/s/process = 616.64
Operation type = floating point
Verification = SUCCESSFUL
Version = 3.3
Compile date = 25 Dec 2014
Compile options:
MPIF77 = mpif77
FLINK = $(MPIF77)
FMPI_LIB = -L/usr/lib/openmpi/lib -lmpi -lopen-rte -lo...
FMPI_INC = -I/usr/lib/openmpi/include -I/usr/lib/openm...
FFLAGS = -O
FLINKFLAGS = -O
RAND = randi8
Please send the results of this run to:
NPB Development Team
Internet: npb#nas.nasa.gov
If email is not available, send this to:
MS T27A-1
NASA Ames Research Center
Moffett Field, CA 94035-1000
Fax: 650-604-3957
Finish in 16:46:46--25/12/2014
-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-
-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-
Start in 17:03:13--25/12/2014
NAS Parallel Benchmarks 3.3 -- CG Benchmark
Size: 75000
Iterations: 75
Number of active processes: 1
Number of nonzeroes per row: 13
Eigenvalue shift: .600E+02
iteration ||r|| zeta
1 0.30354859861452E-12 59.9994751578754
2 0.11186435488267E-14 21.7627846142536
3 0.11312258511928E-14 22.2876617043224
4 0.11222160585284E-14 22.5230738188346
5 0.11244234177219E-14 22.6275390653892
6 0.11330434819384E-14 22.6740259189533
7 0.11334259623050E-14 22.6949056826251
8 0.11374839313647E-14 22.7044023166872
9 0.11424877443039E-14 22.7087834345620
10 0.11329475190566E-14 22.7108351397177
11 0.11337364093482E-14 22.7118107121341
12 0.11379928308864E-14 22.7122816240971
13 0.11369453681794E-14 22.7125122663243
14 0.11430390337015E-14 22.7126268007594
15 0.11400318886400E-14 22.7126844161819
16 0.11352091331197E-14 22.7127137461755
17 0.11350923439124E-14 22.7127288402000
18 0.11475378864565E-14 22.7127366848296
19 0.11366777929028E-14 22.7127407981217
20 0.11274243312504E-14 22.7127429721364
21 0.11353930792856E-14 22.7127441294025
22 0.11299685800278E-14 22.7127447493900
23 0.11296405041170E-14 22.7127450834533
24 0.11381975597887E-14 22.7127452643881
25 0.11328127301663E-14 22.7127453628451
26 0.11367332658939E-14 22.7127454166517
27 0.11283372178605E-14 22.7127454461696
28 0.11384734158863E-14 22.7127454624211
29 0.11394011989719E-14 22.7127454713974
30 0.11354294067640E-14 22.7127454763703
31 0.11412988029103E-14 22.7127454791343
32 0.11358088407717E-14 22.7127454806740
33 0.11263266152515E-14 22.7127454815316
34 0.11275183080286E-14 22.7127454820131
35 0.11328306951409E-14 22.7127454822840
36 0.11357880314891E-14 22.7127454824349
37 0.11332687790488E-14 22.7127454825202
38 0.11324108818137E-14 22.7127454825684
39 0.11365065523777E-14 22.7127454825967
40 0.11361185361321E-14 22.7127454826116
41 0.11276519820716E-14 22.7127454826202
42 0.11317183424878E-14 22.7127454826253
43 0.11236007481770E-14 22.7127454826276
44 0.11304065564684E-14 22.7127454826296
45 0.11287791356431E-14 22.7127454826310
46 0.11297028000133E-14 22.7127454826310
47 0.11281236869666E-14 22.7127454826314
48 0.11277254075548E-14 22.7127454826317
49 0.11320327289847E-14 22.7127454826309
50 0.11287655285563E-14 22.7127454826321
51 0.11230503422400E-14 22.7127454826324
52 0.11292089094944E-14 22.7127454826313
53 0.11366728396408E-14 22.7127454826315
54 0.11222618466968E-14 22.7127454826310
55 0.11278193276516E-14 22.7127454826315
56 0.11244624896030E-14 22.7127454826316
57 0.11264508872685E-14 22.7127454826318
58 0.11255583774760E-14 22.7127454826314
59 0.11227129146723E-14 22.7127454826314
60 0.11189480800173E-14 22.7127454826318
61 0.11163241472678E-14 22.7127454826315
62 0.11278839424218E-14 22.7127454826318
63 0.11226804133008E-14 22.7127454826313
64 0.11222456601361E-14 22.7127454826317
65 0.11270879524310E-14 22.7127454826308
66 0.11303771390006E-14 22.7127454826319
67 0.11240101357287E-14 22.7127454826319
68 0.11240278884391E-14 22.7127454826321
69 0.11207748067718E-14 22.7127454826317
70 0.11178755187571E-14 22.7127454826327
71 0.11195935245649E-14 22.7127454826313
72 0.11260715126337E-14 22.7127454826322
73 0.11281677964997E-14 22.7127454826316
74 0.11162340034815E-14 22.7127454826318
75 0.11208709203921E-14 22.7127454826310
Benchmark completed
VERIFICATION SUCCESSFUL
Zeta is 0.2271274548263E+02
Error is 0.3128387698896E-15
CG Benchmark Completed.
Class = B
Size = 75000
Iterations = 75
Time in seconds = 87.47
Total processes = 1
Compiled procs = 1
Mop/s total = 625.43
Mop/s/process = 625.43
Operation type = floating point
Verification = SUCCESSFUL
Version = 3.3
Compile date = 25 Dec 2014
Compile options:
MPIF77 = mpif77
FLINK = $(MPIF77)
FMPI_LIB = -L/usr/lib/openmpi/lib -lmpi -lopen-rte -lo...
FMPI_INC = -I/usr/lib/openmpi/include -I/usr/lib/openm...
FFLAGS = -O
FLINKFLAGS = -O
RAND = randi8
Please send the results of this run to:
NPB Development Team
Internet: npb#nas.nasa.gov
If email is not available, send this to:
MS T27A-1
NASA Ames Research Center
Moffett Field, CA 94035-1000
Fax: 650-604-3957
Finish in 17:04:43--25/12/2014
-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-
tavg.dat
88.3055
45.1482
37.7202
37.4035
53.777
speedup.dat
1
1.9559
2.34107
2.36089
1.64207
You can do it all in one awk script that processes all the log files:
#!/usr/bin/awk -f
BEGIN { FS="=" }
lfname != FILENAME { lfname = FILENAME; split(FILENAME, a, "."); fnum=a[3] }
/Time in seconds/ { tsecs[fnum] += $2; tcnt[fnum]++ }
/Total processes/ { cp[fnum] = int($2) }
END {
tavg1 = tsecs[1]/tcnt[1]
for( k in tsecs ) {
tavgk = tsecs[k]/tcnt[k]
if( tavgk > 0 ) {
print k OFS cp[k] OFS tavgk OFS tavg1/tavgk
}
}
}
If you put that in a file called awk.script and make it executable with chmod +x awk.script you can run it in bash like:
./awk.script cg.B.*.log
If you're using GNU awk, the output will be ordered( extra steps may be needed to ensure the output is ordered using other awk flavors ).
Where I generated a 2nd and 3rd file, the output is like:
1 1 88.095 1
2 2 68.095 1.29371
3 4 49.595 1.77629
where the unnamed columns are like: file number, # processes, avg per file, speedup. You could get just the speedups by changing the print in the END block to be like print tavg1/tavgk.
Here's a breakdown of the script:
Use a simpler field separator in BEGIN
lfname != FILENAME - parse out file number from the filename as fnum but only when the FILENAME changes.
/Time in seconds/ - store the values in tsecs and tcnt arrays with an fnum key. Use int() function to strip whitespace from processes value.
/Total processes/ - store the process in the cp array with an fnum key
END - Calculate the average for fnum 1 as tavg1, loop through the keys in tsecs and calculate the average by fnum key as tavgk. When tavgk > 0 print the output as described above.
You have figured out all the difficult parts already. You don't need the tavg.dat file at all. Create your tavg(n) function directly as a system call:
tavg(n) = system("awk 'BEGIN { FS = \"[ \\t]*=[ \\t]*\" } \
/Time in seconds/ { s += $2; c++ } /Total processes/ { \
if (! CP) CP = $2 } END { print s/c }' cg.B.".n.".log")
And a speedup(n) function as
speedup(n)=tavg(n)/tavg(1)
Now you can set print to write to a file:
set print "speedup.dat"
do for [i=1:5] {
print speedup(i)
}
unset print

Why is RLIMIT_NOFILE rlim_max of -1 on BSD?

In the following code:
139 struct rlimit limit;
140
141 method = "rlimit";
142 if (getrlimit(RLIMIT_NOFILE, &limit) < 0) {
143 perror("calling getrlimit");
144 exit(1);
145 }
146
147 /* set the current to the maximum or specified value */
148 if (max_desired_fds)
149 limit.rlim_cur = max_desired_fds;
150 else {
151 limit.rlim_cur = limit.rlim_max;
152 }
153
154 if (setrlimit(RLIMIT_NOFILE, &limit) < 0) {
155 perror("calling setrlimit");
156 exit(1);
157 }
the setrlimit line fails (I get the error "calling setrlimit"). Further investigation shows that limit.rlim_max is -1, which is not a valid value. Any ideas why would this be? This is on Mac OSX.
If setrlimit fails, try again with rlim_cur set to OPEN_MAX. For example, see http://source.winehq.org/source/libs/wine/loader.c#L653. (The comment mentioning Leopard means that Leopard first introduced that behavior. Read it as Leopard-and-later.)
ETA: See the note in COMPATIBILITY in the setrlimit(2) man page.

Resources