Category Archives: Mac OS X

Testing for presence of Apple platform in C/C++/ObjC code

Are we running on an Apple platform?
#ifdef __APPLE__
#endif
Prerequisite for other tests
#ifdef __APPLE__
// let Apple define 
// various TARGET_OS_ 
// constants
#include  
#else
// not on Apple platform
TARGET_OS_MAC 0
TARGET_OS_IPHONE 0
#endif
Are we running on Mac OS X?
#if TARGET_OS_MAC && !TARGET_OS_IPHONE
….
#endif
Are we running on an iOS device?
#if TARGET_OS_IPHONE
….
#endif
// updated on Oct13 2010, previous method was flawed. sorry everyone!

Apache 403 — one cause on Mac (and other Unixes)

Things suddenly broke, without installing web-server-related stuff, without touching apache config?

It’s probably permissions.
No really, you checked out permissions, and it looks ok. Really, “Sites” (or “public_html”) looks ok. However, the entire path needs to be fixed.

Check if each directory in full path to the file you want to serve contains at least executable permission for the web group, or “other” group. That is, on Mac this helped me:

chmod o+x /Users
chmod o+x /Users/ivucica
chmod 755 /Users/ivucica/Sites

What went wrong for me? I suspect Mac OS X 10.6’s disk check, or perhaps one other disk utility I recently used, messed up the executable permission flag of /Users/ivucica. I have no other explanation.

This tip would probably help under GNU/Linux too.

Steam Mac: Proxy error when accepting gifts

Getting the following error on Steam Mac when attempting to accept gift by clicking on link in the email?

Unable to connect to HTTP Proxy. Your proxy may be misconfigured or offline. -336

Unable to connect to HTTP Proxy. Your proxy may be misconfigured or offline.

Woah! But you don’t use a proxy, do you? Solution is simple. For all your Internet connections (just to be safe), in System Preferences, disable Auto Proxy Discovery. Click on screenshots to enlarge.

This worked for me, but your mileage may vary. Now, let’s report this on the Steam Mac forum…

Using Alpine on MacOSX and with Gmail

Ahh… good ol’ Pine. One of coolest little mail programs.

Step 1: Get MacPorts

Step 2: In terminal:
sudo port install alpine
Step 3: Launch alpine.
Step 4: Go to configuration options. Set up the options, as follows:
User Domain: user@gmail.com
SMTP Server: smtp.gmail.com:587/tls/novalidate-cert/user=user@gmail.com
Inbox Path:
  Name of Inbox server: imap.gmail.com/ssl/novalidate-cert/user=user@gmail.com
  Folder on “imap.gmail.com/ss…” to use for INBOX [inbox]: just press enter here.
Final settings:

That’s it!

Sweet.

Note the potentially insecure novalidate-cert because Google’s certificate is considered invalid, and I didn’t feel like going and finding how to add this cert properly.

Colorized output for ls on Mac OS X

Short route:

alias ls=”ls -G”
Permanent short route:
echo alias ls=\”ls -G\” >> ~/.bash_profile
Long explanation:
Mac OS X’s BSD-based implementation of ls does not have support for GNU-style long options such as ls –color. All its options are short options. To get color, you can pass -G.
So what we do is tell bash that whenever we type ls, we actually want to type ls -G.
alias ls=”ls -G”
ls also supports another way to turn on colorization, and this is to set environment variable CLICOLORS.
export CLICOLORS=1
You can also reconfigure the colors used. Some people recommend this colorset:
export LSCOLORS=dxfxcxdxbxegedabagacad
What does this mean? Each letter is one color. For example, d is brown, x is default background and foreground, B is bold red, etc. Each position determines function. Straight from the horse’s mouth (man ls):
                     The color designators are as follows:

                           a     black
                           b     red
                           c     green
                           d     brown
                           e     blue
                           f     magenta
                           g     cyan
                           h     light grey
                           A     bold black, usually shows up as dark grey
                           B     bold red
                           C     bold green
                           D     bold brown, usually shows up as yellow
                           E     bold blue
                           F     bold magenta
                           G     bold cyan
                           H     bold light grey; looks like bright white
                           x     default foreground or background

                     Note that the above are standard ANSI colors.  The actual
                     display may differ depending on the color capabilities of
                     the terminal in use.

                     The order of the attributes are as follows:

                           1.   directory
                           2.   symbolic link
                           3.   socket
                           4.   pipe
                           5.   executable
    
                      6.   block special
                           7.   character special
                           8.   executable with setuid bit set
                           9.   executable with setgid bit set
                           10.  directory writable to others, with sticky bit
                           11.  directory writable to others, without sticky
                                bit

                     The default is “exfxcxdxbxegedabagacad”, i.e. blue fore-
                     ground and default background for regular directories,
                     black foreground and red background for setuid executa-
                     bles, etc.