<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>[cocoa myNotes];</title>
	<atom:link href="http://chamelo.co.uk/feed" rel="self" type="application/rss+xml" />
	<link>http://chamelo.co.uk</link>
	<description>In this blog you will find some of my notes for programming in Cocoa.</description>
	<lastBuildDate>Thu, 17 May 2012 21:02:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Is been a while</title>
		<link>http://chamelo.co.uk/is-been-a-while</link>
		<comments>http://chamelo.co.uk/is-been-a-while#comments</comments>
		<pubDate>Thu, 17 May 2012 11:36:26 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[6Wunderkinder]]></category>
		<category><![CDATA[Not Cocoa]]></category>
		<category><![CDATA[Berlin]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=654</guid>
		<description><![CDATA[Hello everyone, Yes, is been a while since I wrote a post, but the reason is mainly a huge transition in my life. ^^ I have been an iOS developer for a while which in fact I loved doing. My main thinking was, I will never leave London to move to any other city in [...]]]></description>
			<content:encoded><![CDATA[
<p>Hello everyone,</p>
<p>Yes, is been a while since I wrote a post, but the reason is mainly a huge transition in my life. ^^<br />
I have been an iOS developer for a while which in fact I loved doing. My main thinking was, I will never leave London to move to any other city in Europe, obviously because of the language and the opportunities. (there are quite many there)</p>
<p><img class="alignright  wp-image-655" title="149733_338793192842338_121864874535172_821771_2018380529_n" src="http://chamelo.co.uk/wp-content/uploads/2012/05/149733_338793192842338_121864874535172_821771_2018380529_n-300x300.jpg" alt="" width="180" height="180" /></p>
<p>It turns out that, no matter how good your plan is or what you been thinking, there are some offers that you simply cannot refuse. <img src='http://chamelo.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I experienced that decision making paradigm which comes with a predefined decision and from 1st of May I joined <a href="http://6wunderkinder.com" target="_blank">6wunderkinder</a> to do Mac OS X development.</p>
<p>So at some stage in April I got the official offer and 3 days to think about it.</p>
<p>No matter how many people I have asked, their answers were always 50-50, believe me, there is no one next to you that will make such decision for you, is just to much to ask. The funny thing is that the moment I got the offer, I already accepted it. (in the back of my head)</p>
<p>&nbsp;</p>
<p><a href="http://chamelo.co.uk/wp-content/uploads/2012/05/prenzl.tiff"><img class="alignleft  wp-image-658" style="border-width: 1px; border-color: black; border-style: solid;" title="prenzl" src="http://chamelo.co.uk/wp-content/uploads/2012/05/prenzl.tiff" alt="" width="176" height="176" /></a>Since I never visited Berlin before in my life, I was a bit scared, questioning my self, What&#8217;s there? Will it be nice? Will I be able to manage without speaking German? These are hard questions to answer because living is a whole different thing than just visiting for vacations.</p>
<p>Now, I moved to Berlin!!! The city is fantastic&#8230; Finally I get to drink a beer on the street without violating the law. Yeah in London apparently you cannot walk around with a can of Stella, so pathetic.</p>
<p>&nbsp;</p>
<p>Few facts  so far:</p>
<ul>
<li>Everything is cheaper and I am not exaggerating, ok maybe shopping is a bit more expensive (clothes, shoes e.t.c.)</li>
<li>Drinking outside is not a crime.</li>
<li>You can smoke in the bars and clubs. ( this is something I did not expect )</li>
<li>It is possible to rent an apartment and commute 20mins maximum to get to work.</li>
<li>Techno/minimal is the music of this city.</li>
<li>Starting work at 10:30 and having a launch break at 12:00, seems normal.</li>
<li>A monthly ticket for transportation costs 74€.</li>
<li>You pay an additional ticket (1,50€) for your bike.</li>
<li>Dogs can get in anywhere.</li>
<li>Curry wurst is the food.</li>
<li>Stadtmitte is my favorite area.</li>
</ul>
<p>It is my happiest periods ever, doing what you love, with people that are in the top of their field, it makes work so interesting&#8230; Is the first time I work for a startup company and is quite new to me. &#8220;That everyone is good&#8221; that is a fact, the portfolio outlines that, but their passion about their work is something unique&#8230;</p>
<p>This post is for thanking all the people that contributed so far, my family, my dearest friend Vasileios ( <strong><a href="http://desactive.co.uk" target="_blank">desactive.co.uk</a> </strong>) , a designer based in London that you should hire, because he is soon to graduate and on the run for an awesome job <img src='http://chamelo.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  , Vasileia ( <strong><a href="http://vasileia.me" target="_blank">vasileia.me</a> </strong>) , a Java developer based in Nuremberg that helps me the most with my German lessons. Blasco, Mudasar ( <strong><a href="http://mudasar.co.uk/" target="_blank">mudasar.co.uk</a> </strong>), Khaled and Lorenzo ( <strong><a href="http://lblasa.com/" target="_blank">lblasa.com</a> </strong>) for all the code we wrote together and of course Argiris ( <strong><a href="http://argiris.me" target="_blank">argiris.me</a></strong> ) for supporting nscoding. <img src='http://chamelo.co.uk/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>That&#8217;s all for now <img src='http://chamelo.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Sure I will come back with posts related to Cocoa, till then have fun, Love from Berlin!</p>
<p>&nbsp;</p>

]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/is-been-a-while/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using double pointers with functions</title>
		<link>http://chamelo.co.uk/using-double-pointers-with-functions</link>
		<comments>http://chamelo.co.uk/using-double-pointers-with-functions#comments</comments>
		<pubDate>Thu, 29 Dec 2011 01:06:18 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Cocoa-Touch]]></category>
		<category><![CDATA[Pointers]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=619</guid>
		<description><![CDATA[Obviously is a technique that is not heavily used, but it comes handy some times. Methods in objective-C can return up to one argument. Double pointers can help you &#8220;return&#8221; more than one. How is this useful, For example, two methods: // interface - &#40;UIImage*&#41;logoForTag:&#40;int&#41;aTag; - &#40;NSString*&#41;titleForTag:&#40;int&#41;aTag; &#160; // implementation - &#40;UIImage*&#41;logoForTag:&#40;int&#41;aTag &#123; switch &#40;aTag&#41; [...]]]></description>
			<content:encoded><![CDATA[
<p>Obviously is a technique that is not heavily used, but it comes handy some times. Methods in objective-C can return up to one argument. Double pointers can help you &#8220;return&#8221; more than one.</p>
<p>How is this useful,</p>
<p>For example, two methods:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #11740a; font-style: italic;">// interface</span>
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span>UIImage<span style="color: #002200;color: #CCC;">*</span><span style="color: #002200;color: #CCC;">&#41;</span>logoForTag<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">int</span><span style="color: #002200;color: #CCC;">&#41;</span>aTag;
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #400080;">NSString</span><span style="color: #002200;color: #CCC;">*</span><span style="color: #002200;color: #CCC;">&#41;</span>titleForTag<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">int</span><span style="color: #002200;color: #CCC;">&#41;</span>aTag;
&nbsp;
<span style="color: #11740a; font-style: italic;">// implementation</span>
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span>UIImage<span style="color: #002200;color: #CCC;">*</span><span style="color: #002200;color: #CCC;">&#41;</span>logoForTag<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">int</span><span style="color: #002200;color: #CCC;">&#41;</span>aTag
<span style="color: #002200;color: #CCC;">&#123;</span>
    <span style="color: #a61390;color: #B83A24;">switch</span> <span style="color: #002200;color: #CCC;">&#40;</span>aTag<span style="color: #002200;color: #CCC;">&#41;</span> <span style="color: #002200;color: #CCC;">&#123;</span>
        <span style="color: #a61390;color: #B83A24;">case</span> <span style="color: #2400d9;color: #DDD;">0</span><span style="color: #002200;color: #CCC;">:</span>
            <span style="color: #a61390;color: #B83A24;">return</span> <span style="color: #002200;color: #CCC;">&#91;</span>UIImage imageNamed<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;0&quot;</span><span style="color: #002200;color: #CCC;">&#93;</span>;
            <span style="color: #a61390;color: #577A61;">break</span>;
        <span style="color: #a61390;color: #B83A24;">case</span> <span style="color: #2400d9;color: #DDD;">1</span><span style="color: #002200;color: #CCC;">:</span>
            <span style="color: #a61390;color: #B83A24;">return</span> <span style="color: #002200;color: #CCC;">&#91;</span>UIImage imageNamed<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;1&quot;</span><span style="color: #002200;color: #CCC;">&#93;</span>;
            <span style="color: #a61390;color: #577A61;">break</span>;
<span style="color: #11740a; font-style: italic;">//..    </span>
        <span style="color: #a61390;color: #B83A24;">default</span><span style="color: #002200;color: #CCC;">:</span>
            <span style="color: #a61390;color: #577A61;">break</span>;
    <span style="color: #002200;color: #CCC;">&#125;</span>    
    <span style="color: #a61390;color: #B83A24;">return</span> <span style="color: #a61390;color: #577A61;">nil</span>;
<span style="color: #002200;color: #CCC;">&#125;</span>
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #400080;">NSString</span><span style="color: #002200;color: #CCC;">*</span><span style="color: #002200;color: #CCC;">&#41;</span>titleForTag<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">int</span><span style="color: #002200;color: #CCC;">&#41;</span>aTag
<span style="color: #002200;color: #CCC;">&#123;</span>
    <span style="color: #a61390;color: #B83A24;">switch</span> <span style="color: #002200;color: #CCC;">&#40;</span>aTag<span style="color: #002200;color: #CCC;">&#41;</span> <span style="color: #002200;color: #CCC;">&#123;</span>
        <span style="color: #a61390;color: #B83A24;">case</span> <span style="color: #2400d9;color: #DDD;">0</span><span style="color: #002200;color: #CCC;">:</span>
            <span style="color: #a61390;color: #B83A24;">return</span> <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #400080;">NSString</span> stringWithFormat<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;0&quot;</span><span style="color: #002200;color: #CCC;">&#93;</span>;
            <span style="color: #a61390;color: #577A61;">break</span>;
        <span style="color: #a61390;color: #B83A24;">case</span> <span style="color: #2400d9;color: #DDD;">1</span><span style="color: #002200;color: #CCC;">:</span>
            <span style="color: #a61390;color: #B83A24;">return</span> <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #400080;">NSString</span> stringWithFormat<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;1&quot;</span><span style="color: #002200;color: #CCC;">&#93;</span>;
            <span style="color: #a61390;color: #577A61;">break</span>;
            <span style="color: #11740a; font-style: italic;">//..    </span>
        <span style="color: #a61390;color: #B83A24;">default</span><span style="color: #002200;color: #CCC;">:</span>
            <span style="color: #a61390;color: #577A61;">break</span>;
    <span style="color: #002200;color: #CCC;">&#125;</span>    
    <span style="color: #a61390;color: #B83A24;">return</span> <span style="color: #a61390;color: #577A61;">nil</span>;
<span style="color: #002200;color: #CCC;">&#125;</span></pre></div></div>

<p>We passing the same tag and we are doing the same comparison with the switch statement.<br />
It already obvious that things could be different,  <strong>THIS IS A HINT.</strong> you see duplicated code. </p>
<p>So, we want one method that does that:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">void</span><span style="color: #002200;color: #CCC;">&#41;</span>setTitle<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #400080;">NSString</span><span style="color: #002200;color: #CCC;">*</span><span style="color: #002200;color: #CCC;">&#41;</span>title andImage<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span>UIImage<span style="color: #002200;color: #CCC;">*</span><span style="color: #002200;color: #CCC;">&#41;</span>image forTag<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">int</span><span style="color: #002200;color: #CCC;">&#41;</span>aTag
&nbsp;
<span style="color: #11740a; font-style: italic;">// calling the method</span>
    <span style="color: #400080;">NSString</span> <span style="color: #002200;color: #CCC;">*</span><span style="color: #a61390;color: #B83A24;">string</span> <span style="color: #002200;color: #CCC;">=</span> <span style="color: #a61390;color: #577A61;">nil</span>;
    UIImage <span style="color: #002200;color: #CCC;">*</span>image <span style="color: #002200;color: #CCC;">=</span> <span style="color: #a61390;color: #577A61;">nil</span>;
&nbsp;
    <span style="color: #002200;color: #CCC;">&#91;</span>singlePointerMethod setTitle<span style="color: #002200;color: #CCC;">:</span><span style="color: #a61390;color: #B83A24;">string</span> andImage<span style="color: #002200;color: #CCC;">:</span>image forTag<span style="color: #002200;color: #CCC;">:</span><span style="color: #2400d9;color: #DDD;">0</span><span style="color: #002200;color: #CCC;">&#93;</span>;
&nbsp;
    NSLog<span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;%@,%@&quot;</span>,<span style="color: #a61390;color: #B83A24;">string</span> ,image<span style="color: #002200;color: #CCC;">&#41;</span>;
    <span style="color: #11740a; font-style: italic;">// NULL , NULL</span></pre></div></div>

<p>But wait, this does not work <img src='http://chamelo.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Why? Well, passing a pointer to your function it can only modify the pointer that is pointing to. In this case nil, the objects have not ben allocated yet. We cannot return the change to the caller.</p>
<p>So the solution of double pointers or &#8220;pointer to pointer&#8221;. Passing a pointer to a pointer to the function we can modify the pointer to point to another object. This allows us to pass a pointer to a function and modify it.</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #11740a; font-style: italic;">// interface</span>
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">void</span><span style="color: #002200;color: #CCC;">&#41;</span>setTitle<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #400080;">NSString</span><span style="color: #002200;color: #CCC;">**</span><span style="color: #002200;color: #CCC;">&#41;</span>title andImage<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span>UIImage<span style="color: #002200;color: #CCC;">**</span><span style="color: #002200;color: #CCC;">&#41;</span>image forTag<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">int</span><span style="color: #002200;color: #CCC;">&#41;</span>aTag
&nbsp;
<span style="color: #11740a; font-style: italic;">// implementation</span>
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">void</span><span style="color: #002200;color: #CCC;">&#41;</span>setTitle<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #400080;">NSString</span><span style="color: #002200;color: #CCC;">**</span><span style="color: #002200;color: #CCC;">&#41;</span>title andImage<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span>UIImage<span style="color: #002200;color: #CCC;">**</span><span style="color: #002200;color: #CCC;">&#41;</span>image forTag<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">int</span><span style="color: #002200;color: #CCC;">&#41;</span>aTag
<span style="color: #002200;color: #CCC;">&#123;</span>
    <span style="color: #a61390;color: #B83A24;">switch</span> <span style="color: #002200;color: #CCC;">&#40;</span>aTag<span style="color: #002200;color: #CCC;">&#41;</span> <span style="color: #002200;color: #CCC;">&#123;</span>
        <span style="color: #a61390;color: #B83A24;">case</span> <span style="color: #2400d9;color: #DDD;">0</span><span style="color: #002200;color: #CCC;">:</span>
            <span style="color: #002200;color: #CCC;">*</span>image <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span>UIImage imageNamed<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;0&quot;</span><span style="color: #002200;color: #CCC;">&#93;</span>;
            <span style="color: #002200;color: #CCC;">*</span>title <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #400080;">NSString</span> stringWithFormat<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;0&quot;</span><span style="color: #002200;color: #CCC;">&#93;</span>;
            <span style="color: #a61390;color: #577A61;">break</span>;
        <span style="color: #a61390;color: #B83A24;">case</span> <span style="color: #2400d9;color: #DDD;">1</span><span style="color: #002200;color: #CCC;">:</span>
            <span style="color: #002200;color: #CCC;">*</span>image <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span>UIImage imageNamed<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;1&quot;</span><span style="color: #002200;color: #CCC;">&#93;</span>;
            <span style="color: #002200;color: #CCC;">*</span>title <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #400080;">NSString</span> stringWithFormat<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;1&quot;</span><span style="color: #002200;color: #CCC;">&#93;</span>;
            <span style="color: #a61390;color: #577A61;">break</span>;
            <span style="color: #11740a; font-style: italic;">//..    </span>
        <span style="color: #a61390;color: #B83A24;">default</span><span style="color: #002200;color: #CCC;">:</span>
            <span style="color: #a61390;color: #577A61;">break</span>;
    <span style="color: #002200;color: #CCC;">&#125;</span>        
<span style="color: #002200;color: #CCC;">&#125;</span>
&nbsp;
<span style="color: #11740a; font-style: italic;">// usage</span>
    <span style="color: #400080;">NSString</span> <span style="color: #002200;color: #CCC;">*</span><span style="color: #a61390;color: #B83A24;">string</span> <span style="color: #002200;color: #CCC;">=</span> <span style="color: #a61390;color: #577A61;">nil</span>;
    UIImage <span style="color: #002200;color: #CCC;">*</span>image <span style="color: #002200;color: #CCC;">=</span> <span style="color: #a61390;color: #577A61;">nil</span>;
&nbsp;
    <span style="color: #002200;color: #CCC;">&#91;</span>singlePointerMethod setTitle<span style="color: #002200;color: #CCC;">:&amp;</span>string andImage<span style="color: #002200;color: #CCC;">:&amp;</span>image forTag<span style="color: #002200;color: #CCC;">:</span><span style="color: #2400d9;color: #DDD;">0</span><span style="color: #002200;color: #CCC;">&#93;</span>;
&nbsp;
    NSLog<span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;%@,%@&quot;</span>,<span style="color: #a61390;color: #B83A24;">string</span> ,image<span style="color: #002200;color: #CCC;">&#41;</span>;
    <span style="color: #11740a; font-style: italic;">// log 0,&lt;UIImage: 0x685dc10&gt;</span></pre></div></div>


]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/using-double-pointers-with-functions/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Regular expression&#8230; Postcode (UK)</title>
		<link>http://chamelo.co.uk/regular-expression-postcode-uk</link>
		<comments>http://chamelo.co.uk/regular-expression-postcode-uk#comments</comments>
		<pubDate>Wed, 28 Dec 2011 13:51:38 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Cocoa-Touch]]></category>
		<category><![CDATA[NSRegularExpression]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=607</guid>
		<description><![CDATA[You can do so much with regular expressions that it becomes one of the most attractive programming tools. I guess you can avoid them (I am not sure how) and extract your information from a text without them, but it will be a painful procedure. Well this article is not about explaining them, is more [...]]]></description>
			<content:encoded><![CDATA[
<p>You can do so much with regular expressions that it becomes one of the most attractive programming tools. I guess you can avoid them (I am not sure how) and extract your information from a text without them, but it will be a painful procedure.</p>
<p>Well this article is not about explaining them, is more like&#8230; hmm&#8230; Beat it and I will reconsider:</p>
<p>The most common examples where are I use them are:</p>
<ol>
<li> Extracting information from a long piece of text.</li>
<li> Validating an input field.</li>
</ol>
<p>The first one is fairly straight forward, you have a text and you want find something in particular, such as matching a word, a value and so on&#8230; </p>
<p><strong>The other one, is the main reason of the article. </strong></p>
<p>You often have a textfield for the user to enter a value. How do you validate the input? You cannot iterate through the characters and it would be very complex. Consider an example where a textfield accepts only postcodes (it is like the MOST sensible paradigm I can give)</p>
<p>Here is the format of the british postcodes:<br />
A9 9AA, A99 9AA, AA9 9AA, AA99 9AA, A9A 9AA, AA9A 9AA</p>
<p>How will you do that? If you can do it without regular expressions I would be amazed&#8230; I have not checked the processing time, but I am happy to do so if you think you can do it faster.</p>
<ol>
<li>Yeah clearly the first one needs to be a letter</li>
<li>We also know that it ends with a number followed by two letters. Cool. (9AA)</li>
</ol>
<p>What about the rest:</p>
<ol>
<li>Then it could be a letter or a number (A<strong>A</strong>9 9AA , A<strong>9</strong> 9AA)</li>
<li>Then it could be a space, or a letter or a number (A9<strong>_</strong>9AA, A9<strong>A</strong> 9AA , AA<strong>9</strong>9 9AA)</li>
<li>Then it could be a space, or a letter or a number (AA9<strong>_</strong>9AA , AA9<strong>A</strong> 9AA , AA9<strong>9</strong> 9AA)</li>
<li>Then it could be a space (AA9A<strong>_</strong>9AA)</li>
</ol>
<p>Think about it so many combinations. </p>
<p>The following expression does it for you&#8230;</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;">NSRegularExpression <span style="color: #002200;color: #CCC;">*</span>regex <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span>NSRegularExpression regularExpressionWithPattern<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;^([A-Z])([A-Z]|[0-9])?([0-9]|[A-Z])?([0-9]|[A-Z])([<span style="color: #2400d9;">\\</span>s]*)[0-9][A-Z][A-Z]$&quot;</span>
    options<span style="color: #002200;color: #CCC;">:</span>NSRegularExpressionSearch | NSRegularExpressionCaseInsensitive
       error<span style="color: #002200;color: #CCC;">:</span><span style="color: #a61390;color: #577A61;">nil</span><span style="color: #002200;color: #CCC;">&#93;</span>;
&nbsp;
<span style="color: #11740a; font-style: italic;">// search for matches</span>
NSUInteger numberOfMatches <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span>regex numberOfMatchesInString<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#91;</span>textField text<span style="color: #002200;color: #CCC;">&#93;</span>
       options<span style="color: #002200;color: #CCC;">:</span><span style="color: #2400d9;color: #DDD;">0</span> range<span style="color: #002200;color: #CCC;">:</span>NSMakeRange<span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #2400d9;color: #DDD;">0</span>, <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span>textField text<span style="color: #002200;color: #CCC;">&#93;</span> length<span style="color: #002200;color: #CCC;">&#93;</span><span style="color: #002200;color: #CCC;">&#41;</span><span style="color: #002200;color: #CCC;">&#93;</span>;
&nbsp;
<span style="color: #11740a; font-style: italic;">// if it's a postcode enable the button</span>
<span style="color: #11740a; font-style: italic;">// else disable it</span>
<span style="color: #a61390;color: #B83A24;">if</span> <span style="color: #002200;color: #CCC;">&#40;</span>numberOfMatches&gt;<span style="color: #2400d9;color: #DDD;">0</span><span style="color: #002200;color: #CCC;">&#41;</span>    
<span style="color: #002200;color: #CCC;">&#123;</span>
<span style="color: #11740a; font-style: italic;">// found a match do something</span>
<span style="color: #11740a; font-style: italic;">// maybe enable the done button</span>
<span style="color: #002200;color: #CCC;">&#125;</span>
<span style="color: #a61390;color: #B83A24;">else</span>
<span style="color: #002200;color: #CCC;">&#123;</span>               
<span style="color: #11740a; font-style: italic;">// did not found a match do something else</span>
<span style="color: #11740a; font-style: italic;">// maybe disable the done button</span>
<span style="color: #002200;color: #CCC;">&#125;</span></pre></div></div>

<p><a href="http://developer.apple.com/library/mac/#documentation/Foundation/Reference/NSRegularExpression_Class/Reference/Reference.html">So much power.</a>.. formal definitions, seriously you cannot beat that&#8230;</p>

]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/regular-expression-postcode-uk/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rasterizing a UIView</title>
		<link>http://chamelo.co.uk/rasterizing-a-uiview</link>
		<comments>http://chamelo.co.uk/rasterizing-a-uiview#comments</comments>
		<pubDate>Fri, 21 Oct 2011 20:22:23 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Cocoa-Touch]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Memory]]></category>
		<category><![CDATA[objective-C]]></category>
		<category><![CDATA[SVG]]></category>
		<category><![CDATA[UIImageView]]></category>
		<category><![CDATA[UIView]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=599</guid>
		<description><![CDATA[I was doing some work with parsing and visualising SVG files but the views ended up having lots of paths and a lot of memory was consumed. So the idea was to convert the UIView to an image &#8230; &#160; // Doing work to generate the SVG in the schematics view; // At the end [...]]]></description>
			<content:encoded><![CDATA[
<p>I was doing some work with parsing and visualising SVG files but the views ended up having lots of paths and a lot of memory was consumed. So the idea was to convert the UIView to an image &#8230; <img src='http://chamelo.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;">&nbsp;
<span style="color: #11740a; font-style: italic;">// Doing work to generate the SVG in the schematics view;</span>
<span style="color: #11740a; font-style: italic;">// At the end there was no reason to keep all these (SVGView)subviews </span>
<span style="color: #11740a; font-style: italic;">// ******* Rasterize ************</span>
<span style="color: #11740a; font-style: italic;">// Create an image from the view</span>
&nbsp;
    UIGraphicsBeginImageContext<span style="color: #002200;color: #CCC;">&#40;</span>schematicsView.frame.size<span style="color: #002200;color: #CCC;">&#41;</span>;
    <span style="color: #002200;color: #CCC;">&#91;</span>schematicsView.layer renderInContext<span style="color: #002200;color: #CCC;">:</span>UIGraphicsGetCurrentContext<span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #002200;color: #CCC;">&#41;</span><span style="color: #002200;color: #CCC;">&#93;</span>;
    UIImage <span style="color: #002200;color: #CCC;">*</span>viewImage <span style="color: #002200;color: #CCC;">=</span> UIGraphicsGetImageFromCurrentImageContext<span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #002200;color: #CCC;">&#41;</span>;
    UIGraphicsEndImageContext<span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #002200;color: #CCC;">&#41;</span>;
&nbsp;
<span style="color: #11740a; font-style: italic;">// Remove the SVG views to release the memory.</span>
    <span style="color: #a61390;color: #B83A24;">for</span> <span style="color: #002200;color: #CCC;">&#40;</span>SVGView <span style="color: #002200;color: #CCC;">*</span>view <span style="color: #a61390;color: #B83A24;">in</span> SVGReferences<span style="color: #002200;color: #CCC;">&#41;</span> 
        <span style="color: #002200;color: #CCC;">&#91;</span>view removeFromSuperview<span style="color: #002200;color: #CCC;">&#93;</span>;
&nbsp;
<span style="color: #11740a; font-style: italic;">// Add the image that was created before as a subview</span>
    <span style="color: #002200;color: #CCC;">&#91;</span>self.view addSubview<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span>UIImageView alloc<span style="color: #002200;color: #CCC;">&#93;</span> 
                            initWithImage<span style="color: #002200;color: #CCC;">:</span>viewImage<span style="color: #002200;color: #CCC;">&#93;</span> autorelease<span style="color: #002200;color: #CCC;">&#93;</span><span style="color: #002200;color: #CCC;">&#93;</span>;</pre></div></div>

<p>I swear pure awesomeness!!! <img src='http://chamelo.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/rasterizing-a-uiview/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Checking for decimal points?</title>
		<link>http://chamelo.co.uk/checking-if-a-number-has-decimal-points</link>
		<comments>http://chamelo.co.uk/checking-if-a-number-has-decimal-points#comments</comments>
		<pubDate>Fri, 21 Oct 2011 20:04:46 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Cocoa-Touch]]></category>
		<category><![CDATA[objective-C]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=596</guid>
		<description><![CDATA[To check if a number has decimal points you can do the following: if &#40;floor&#40;value&#41; != value&#41;&#123; // it has decimal points &#125;]]></description>
			<content:encoded><![CDATA[
<p>To check if a number has decimal points you can do the following:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #a61390;color: #B83A24;">if</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #8FB394;">floor</span><span style="color: #002200;color: #CCC;">&#40;</span>value<span style="color: #002200;color: #CCC;">&#41;</span> <span style="color: #002200;color: #CCC;">!=</span> value<span style="color: #002200;color: #CCC;">&#41;</span><span style="color: #002200;color: #CCC;">&#123;</span>
<span style="color: #11740a; font-style: italic;">// it has decimal points</span>
<span style="color: #002200;color: #CCC;">&#125;</span></pre></div></div>


]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/checking-if-a-number-has-decimal-points/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Checking for Null?</title>
		<link>http://chamelo.co.uk/checking-for-null</link>
		<comments>http://chamelo.co.uk/checking-for-null#comments</comments>
		<pubDate>Fri, 21 Oct 2011 20:01:45 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Cocoa-Touch]]></category>
		<category><![CDATA[objective-C]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=592</guid>
		<description><![CDATA[To check if a primitive data type is null you can do the following: if &#40;value != value&#41;&#123; // then is null &#125;]]></description>
			<content:encoded><![CDATA[
<p>To check if a primitive data type is null you can do the following:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #a61390;color: #B83A24;">if</span> <span style="color: #002200;color: #CCC;">&#40;</span>value <span style="color: #002200;color: #CCC;">!=</span> value<span style="color: #002200;color: #CCC;">&#41;</span><span style="color: #002200;color: #CCC;">&#123;</span>
<span style="color: #11740a; font-style: italic;">// then is null</span>
<span style="color: #002200;color: #CCC;">&#125;</span></pre></div></div>


]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/checking-for-null/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NSCoder + NSKeyedArchiver</title>
		<link>http://chamelo.co.uk/nscoder-nskeyedarchiver</link>
		<comments>http://chamelo.co.uk/nscoder-nskeyedarchiver#comments</comments>
		<pubDate>Sat, 18 Jun 2011 23:00:33 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[NSCoder]]></category>
		<category><![CDATA[NSCoding]]></category>
		<category><![CDATA[NSKeyedUnarchiver]]></category>
		<category><![CDATA[NSMutableData]]></category>
		<category><![CDATA[NSOpenPanel]]></category>
		<category><![CDATA[NSSavePanel]]></category>
		<category><![CDATA[Source Code]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=552</guid>
		<description><![CDATA[This post is a simple example of NSCoder and NSKeyedArchiver to save and restore the data of an instance. First of all we need to create our object, in this case an object &#8220;Person&#8221; with three properties (name, surname, age). The interface looks like normally. #import &#60;Foundation/Foundation.h&#62; @interface Person : NSObject &#123; &#125; @property &#40;retain&#41; [...]]]></description>
			<content:encoded><![CDATA[
<p>This post is a simple example of NSCoder and NSKeyedArchiver to save and restore the data of an instance.</p>
<p>First of all we need to create our object, in this case an object &#8220;Person&#8221; with three properties (name, surname, age). The interface looks like normally.</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #6e371a;color: #CDC;">#import &lt;Foundation/Foundation.h&gt;</span>
<span style="color: #a61390;color: #B83A24;">@interface</span> Person <span style="color: #002200;color: #CCC;">:</span> <span style="color: #400080;">NSObject</span> <span style="color: #002200;color: #CCC;">&#123;</span> <span style="color: #002200;color: #CCC;">&#125;</span>
<span style="color: #a61390;color: #B83A24;">@property</span> <span style="color: #002200;color: #CCC;">&#40;</span>retain<span style="color: #002200;color: #CCC;">&#41;</span> <span style="color: #400080;">NSString</span> <span style="color: #002200;color: #CCC;">*</span>firstName;
<span style="color: #a61390;color: #B83A24;">@property</span> <span style="color: #002200;color: #CCC;">&#40;</span>retain<span style="color: #002200;color: #CCC;">&#41;</span> <span style="color: #400080;">NSString</span> <span style="color: #002200;color: #CCC;">*</span>lastName;
<span style="color: #a61390;color: #B83A24;">@property</span> <span style="color: #a61390;color: #B83A24;">int</span> age;
<span style="color: #a61390;color: #B83A24;">@end</span></pre></div></div>

<p>The implementation needs some additional code. We need to implement the <a href="http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Protocols/NSCoding_Protocol/Reference/Reference.html">NSCoding</a> protocol, which means two additional methods. (initWithCoder: and encodeWithCoder:)</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #6e371a;color: #CDC;">#import &quot;Person.h&quot;</span>
<span style="color: #a61390;color: #B83A24;">@implementation</span> Person
<span style="color: #a61390;color: #B83A24;">@synthesize</span> age,firstName,lastName;
<span style="color: #002200;color: #CCC;">-</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span><span style="color: #002200;color: #CCC;">&#41;</span>initWithCoder<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #400080;">NSCoder</span><span style="color: #002200;color: #CCC;">*</span><span style="color: #002200;color: #CCC;">&#41;</span>decoder<span style="color: #002200;color: #CCC;">&#123;</span>
    <span style="color: #a61390;color: #B83A24;">if</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #002200;color: #CCC;">&#40;</span>self <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span>super init<span style="color: #002200;color: #CCC;">&#93;</span><span style="color: #002200;color: #CCC;">&#41;</span><span style="color: #002200;color: #CCC;">&#41;</span> <span style="color: #002200;color: #CCC;">&#123;</span>
        firstName <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span>decoder decodeObjectForKey<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;firstName&quot;</span><span style="color: #002200;color: #CCC;">&#93;</span>;
        lastName  <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span>decoder decodeObjectForKey<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;lastName&quot;</span><span style="color: #002200;color: #CCC;">&#93;</span>;
        age           <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span>decoder decodeIntForKey<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;age&quot;</span><span style="color: #002200;color: #CCC;">&#93;</span>;
    <span style="color: #002200;color: #CCC;">&#125;</span>
    <span style="color: #a61390;color: #B83A24;">return</span> self;
<span style="color: #002200;color: #CCC;">&#125;</span>
<span style="color: #002200;color: #CCC;">-</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">void</span><span style="color: #002200;color: #CCC;">&#41;</span>encodeWithCoder<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #400080;">NSCoder</span><span style="color: #002200;color: #CCC;">*</span><span style="color: #002200;color: #CCC;">&#41;</span>encoder<span style="color: #002200;color: #CCC;">&#123;</span>
    <span style="color: #002200;color: #CCC;">&#91;</span>encoder encodeObject<span style="color: #002200;color: #CCC;">:</span>firstName forKey<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;firstName&quot;</span><span style="color: #002200;color: #CCC;">&#93;</span>;
    <span style="color: #002200;color: #CCC;">&#91;</span>encoder encodeObject<span style="color: #002200;color: #CCC;">:</span>lastName forKey<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;lastName&quot;</span><span style="color: #002200;color: #CCC;">&#93;</span>;
    <span style="color: #002200;color: #CCC;">&#91;</span>encoder encodeInt<span style="color: #002200;color: #CCC;">:</span>age forKey<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;age&quot;</span><span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #002200;color: #CCC;">&#125;</span>
<span style="color: #a61390;color: #B83A24;">@end</span></pre></div></div>

<p>Once we implement the protocol, saving will look like this:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #11740a; font-style: italic;">// Save method</span>
<span style="color: #11740a; font-style: italic;">// We initialise our object and set the values</span>
Person<span style="color: #002200;color: #CCC;">*</span> p1 <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span>Person alloc<span style="color: #002200;color: #CCC;">&#93;</span> init<span style="color: #002200;color: #CCC;">&#93;</span> autorelease<span style="color: #002200;color: #CCC;">&#93;</span>;
p1.firstName <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span>firstNameTextField stringValue<span style="color: #002200;color: #CCC;">&#93;</span>;
p1.lastName  <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span>lastNameTextField stringValue<span style="color: #002200;color: #CCC;">&#93;</span>;
p1.age       <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span>ageTextField intValue<span style="color: #002200;color: #CCC;">&#93;</span>;
&nbsp;
<span style="color: #11740a; font-style: italic;">// We initialise our NSMutableData</span>
<span style="color: #400080;">NSMutableData</span> <span style="color: #002200;color: #CCC;">*</span>sData <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #400080;">NSMutableData</span> alloc<span style="color: #002200;color: #CCC;">&#93;</span> init<span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #11740a; font-style: italic;color: #CDC;">/*And our NSKeyedArchiver initialised to encode stream and version 
information into a given mutable data object.*/</span>
<span style="color: #400080;">NSKeyedArchiver</span> <span style="color: #002200;color: #CCC;">*</span>archiver <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #400080;">NSKeyedArchiver</span> alloc<span style="color: #002200;color: #CCC;">&#93;</span> 
                      initForWritingWithMutableData<span style="color: #002200;color: #CCC;">:</span>sData<span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #11740a; font-style: italic;">// Then we encode our object for a key of our choice</span>
<span style="color: #002200;color: #CCC;">&#91;</span>archiver encodeObject<span style="color: #002200;color: #CCC;">:</span>p1 forKey<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;person&quot;</span><span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #002200;color: #CCC;">&#91;</span>archiver finishEncoding<span style="color: #002200;color: #CCC;">&#93;</span>;
&nbsp;
<span style="color: #11740a; font-style: italic;">// Finally we can write out the data      </span>
<span style="color: #002200;color: #CCC;">&#91;</span>sData writeToURL<span style="color: #002200;color: #CCC;">:</span>fileURL atomically<span style="color: #002200;color: #CCC;">:</span><span style="color: #a61390;color: #577A61;">YES</span><span style="color: #002200;color: #CCC;">&#93;</span>;</pre></div></div>

<p>Restoring is the other way around:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #11740a; font-style: italic;">// Restore method</span>
<span style="color: #400080;">NSMutableData</span> <span style="color: #002200;color: #CCC;">*</span>rData <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #400080;">NSMutableData</span> alloc<span style="color: #002200;color: #CCC;">&#93;</span>
                         initWithContentsOfURL<span style="color: #002200;color: #CCC;">:</span>locationOfTheFile<span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #400080;">NSKeyedUnarchiver</span> <span style="color: #002200;color: #CCC;">*</span>unarchiver <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #400080;">NSKeyedUnarchiver</span> alloc<span style="color: #002200;color: #CCC;">&#93;</span>
                         initForReadingWithData<span style="color: #002200;color: #CCC;">:</span>rData<span style="color: #002200;color: #CCC;">&#93;</span>;
&nbsp;
<span style="color: #11740a; font-style: italic;">// Initialise the object and use the unarchiver to set the values</span>
Person<span style="color: #002200;color: #CCC;">*</span> p1 <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span>Person alloc<span style="color: #002200;color: #CCC;">&#93;</span> init<span style="color: #002200;color: #CCC;">&#93;</span> autorelease<span style="color: #002200;color: #CCC;">&#93;</span>;
p1 <span style="color: #002200;color: #CCC;">=</span>  <span style="color: #002200;color: #CCC;">&#91;</span>unarchiver decodeObjectForKey<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;person&quot;</span><span style="color: #002200;color: #CCC;">&#93;</span>;
&nbsp;
<span style="color: #11740a; font-style: italic;">// set the value on the textfields</span>
<span style="color: #002200;color: #CCC;">&#91;</span>firstNameTextField setStringValue<span style="color: #002200;color: #CCC;">:</span>p1.firstName<span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #002200;color: #CCC;">&#91;</span>lastNameTextField setStringValue<span style="color: #002200;color: #CCC;">:</span>p1.lastName<span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #002200;color: #CCC;">&#91;</span>ageTextField setStringValue<span style="color: #002200;color: #CCC;">:</span>
                 <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #400080;">NSString</span> stringWithFormat<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;%i&quot;</span>,p1.age<span style="color: #002200;color: #CCC;">&#93;</span><span style="color: #002200;color: #CCC;">&#93;</span>;</pre></div></div>

<p>Here is the <a href="https://github.com/nscoding/SaveAndRestoreNSCoder">source code</a> of the above example with NSSavePanel and NSOpenPanel.</p>

]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/nscoder-nskeyedarchiver/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Enumerating collections</title>
		<link>http://chamelo.co.uk/enumerating-collections</link>
		<comments>http://chamelo.co.uk/enumerating-collections#comments</comments>
		<pubDate>Sat, 18 Jun 2011 12:58:16 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Cocoa-Touch]]></category>
		<category><![CDATA[Fast enumeration]]></category>
		<category><![CDATA[NSArray]]></category>
		<category><![CDATA[NSEnumerator]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=534</guid>
		<description><![CDATA[This post is describes techniques to enumerate your objects in a data collection, in this case an NSArray. Using a typical for loop. for &#40;int i=0; i&#38;lt;=&#91;myArray count&#93;; i++&#41;&#123; id myObject = &#91;myArray objectAtIndex:i&#93;; // do something with the object &#125; Using the NSEnumerator. NSEnumerator * enum = &#91;myArray objectEnumerator&#93;; while &#40;id myObject = &#91;enum [...]]]></description>
			<content:encoded><![CDATA[
<p>This post is describes techniques to enumerate your objects in a data collection, in this case an NSArray.</p>
<p><strong>Using a typical for loop.</strong></p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #a61390;color: #B83A24;">for</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">int</span> i<span style="color: #002200;color: #CCC;">=</span><span style="color: #2400d9;color: #DDD;">0</span>; i<span style="color: #002200;color: #CCC;">&amp;</span>lt;<span style="color: #002200;color: #CCC;">=</span><span style="color: #002200;color: #CCC;">&#91;</span>myArray count<span style="color: #002200;color: #CCC;">&#93;</span>; i<span style="color: #002200;color: #CCC;">++</span><span style="color: #002200;color: #CCC;">&#41;</span><span style="color: #002200;color: #CCC;">&#123;</span>
<span style="color: #a61390;color: #B83A24;">id</span> myObject <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span>myArray objectAtIndex<span style="color: #002200;color: #CCC;">:</span>i<span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #11740a; font-style: italic;">// do something with the object</span>
<span style="color: #002200;color: #CCC;">&#125;</span></pre></div></div>

<p><strong>Using the NSEnumerator.</strong></p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #400080;">NSEnumerator</span> <span style="color: #002200;color: #CCC;">*</span> <span style="color: #a61390;color: #577A61;">enum</span> <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span>myArray objectEnumerator<span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #a61390;color: #B83A24;">while</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span> myObject <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #a61390;color: #577A61;">enum</span> nextObject<span style="color: #002200;color: #CCC;">&#93;</span><span style="color: #002200;color: #CCC;">&#41;</span><span style="color: #002200;color: #CCC;">&#123;</span>
<span style="color: #11740a; font-style: italic;">// do something with the object</span>
<span style="color: #002200;color: #CCC;">&#125;</span></pre></div></div>

<p>A much more concrete example can be found <a href="http://chamelo.co.uk/loop-in-your-home-directory">here.</a></p>
<p><strong>Using Fast enumeration.</strong></p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #a61390;color: #B83A24;">for</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span> myObject <span style="color: #a61390;color: #B83A24;">in</span> myArray<span style="color: #002200;color: #CCC;">&#41;</span> <span style="color: #002200;color: #CCC;">&#123;</span>
<span style="color: #11740a; font-style: italic;">// do something with the object</span>
<span style="color: #002200;color: #CCC;">&#125;</span></pre></div></div>

<p><strong>Using makeObjectsPerformSelector</strong> which is not considered as a different method but it could be very handy in some cases:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #002200;color: #CCC;">&#91;</span>newArray makeObjectsPerformSelector<span style="color: #002200;color: #CCC;">:</span><span style="color: #a61390;color: #B83A24;">@selector</span><span style="color: #002200;color: #CCC;">&#40;</span>doSomething<span style="color: #002200;color: #CCC;">&#41;</span><span style="color: #002200;color: #CCC;">&#93;</span>;</pre></div></div>

<p>Which is equivalent to:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #a61390;color: #B83A24;">for</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span> myObject <span style="color: #a61390;color: #B83A24;">in</span> myArray<span style="color: #002200;color: #CCC;">&#41;</span> <span style="color: #002200;color: #CCC;">&#123;</span>
<span style="color: #002200;color: #CCC;">&#91;</span>myObject performSelector<span style="color: #002200;color: #CCC;">:</span><span style="color: #a61390;color: #B83A24;">@selector</span><span style="color: #002200;color: #CCC;">&#40;</span>doSomething<span style="color: #002200;color: #CCC;">&#41;</span><span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #002200;color: #CCC;">&#125;</span></pre></div></div>

<p><em>Notes to take under consideration:</em></p>
<p><em> </em></p>
<p><em> </em></p>
<p><em> </em></p>
<p><em> </em></p>
<p><em></p>
<ul>
<li><span style="font-style: normal;"><em>The id could be replaced with a type.</em></span></li>
<li><span style="font-style: normal;"><em>Enumerating mutable collection can raise exceptions</em></span></li>
<li><span style="font-style: normal;"><em>Fast enumeration is faster than the others, According to Apple &#8220;The enumeration is considerably more efficient than, for example, using NSEnumerator directly.&#8221; so is worth checking it out.</em></span></li>
<li><span style="font-style: normal;"><em>You can use this on your own collection classes by implementing the <a href="http://developer.apple.com/documentation/Cocoa/Reference/NSFastEnumeration_protocol/Reference/NSFastEnumeration.html"><code>NSFastEnumeration</code> protocol</a>.<br />
</em></span></li>
<li><span style="font-style: normal;"><em>For makeObjectsPerformSelector read here for some <a href="http://stackoverflow.com/questions/563051/nsarray-makeobjectsperformselector">insights</a></em></span></li>
</ul>
<p></em></p>
<p>More information <a href="http://developer.apple.com/library/mac/#documentation/cocoa/Conceptual/ObjectiveC/Chapters/ocFastEnumeration.html%23//apple_ref/doc/uid/TP30001163-CH18">here</a></p>

]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/enumerating-collections/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Memory Management Part 1</title>
		<link>http://chamelo.co.uk/memory-management-part-1</link>
		<comments>http://chamelo.co.uk/memory-management-part-1#comments</comments>
		<pubDate>Fri, 17 Jun 2011 12:12:25 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Cocoa-Touch]]></category>
		<category><![CDATA[Memory]]></category>
		<category><![CDATA[Release]]></category>
		<category><![CDATA[Retain]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=464</guid>
		<description><![CDATA[Developing applications requires memory management. In this case, Apple provides a garbage collector for the Mac applications but not for the iPhone. From my point of my I found no reason at all, to avoid using the garbage collector and I would love to know if you think otherwise. So let&#8217;s start: Retain count &#8211; Retain [...]]]></description>
			<content:encoded><![CDATA[
<p><center><br />
<a href="http://chamelo.co.uk/wp-content/uploads/2011/06/memory.tiff"><img class="size-full wp-image-524 aligncenter" title="memory" src="http://chamelo.co.uk/wp-content/uploads/2011/06/memory.tiff" alt="" /></a><br />
</center></p>
<p>Developing applications requires memory management. In this case, Apple provides a garbage collector for the Mac applications but not for the iPhone. From my point of my I found no reason at all, to avoid using the garbage collector and I would love to know if you think otherwise.</p>
<p>So let&#8217;s start: <strong>Retain count &#8211; Retain &#8211; Release </strong></p>
<p><strong> </strong>So every object has a retain count. This is an integer property of each object. For example</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;">myObject <span style="color: #002200;color: #CCC;">*</span>p <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span>myObject alloc<span style="color: #002200;color: #CCC;">&#93;</span> init<span style="color: #002200;color: #CCC;">&#93;</span>;  <span style="color: #11740a; font-style: italic;">// count is now set to 1.</span>
<span style="color: #002200;color: #CCC;">&#91;</span>p retain<span style="color: #002200;color: #CCC;">&#93;</span>;  <span style="color: #11740a; font-style: italic;">// count is now set to 2.</span>
<span style="color: #002200;color: #CCC;">&#91;</span>p release<span style="color: #002200;color: #CCC;">&#93;</span>; <span style="color: #11740a; font-style: italic;">// count is now set to 1.</span>
<span style="color: #002200;color: #CCC;">&#91;</span>p release<span style="color: #002200;color: #CCC;">&#93;</span>; <span style="color: #11740a; font-style: italic;">// count is now set to 0.</span></pre></div></div>

<p>The moment you allocate an object the retain count becomes 1. If you would like to share this object to other objects you will need to retain the object. The retain method will increase the counter by 1. In case you want to decrease the count you can do it using the release method.</p>
<p style="text-align: center;"><em>Note: If the count is 0 then the object is freed.</em></p>
<p><strong>Ownership</strong><br />
<em>You own an object when you alloc it, copy it or new it. If you own an object you need to release it. Consider an NSString<br />
</em></p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #400080;">NSString</span> <span style="color: #002200;color: #CCC;">*</span>example <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #400080;">NSString</span> alloc<span style="color: #002200;color: #CCC;">&#93;</span> initWithString<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;someText&quot;</span><span style="color: #002200;color: #CCC;">&#93;</span>;  
 <span style="color: #11740a; font-style: italic;">// use the above string in your code</span>
<span style="color: #002200;color: #CCC;">&#91;</span>example release<span style="color: #002200;color: #CCC;">&#93;</span>; <span style="color: #11740a; font-style: italic;">// once you finish using it, you need to release it.</span></pre></div></div>

<p><em>If you do not own an object then you are not responsible for releasing it unless you have explicitly retained it. Consider an NSString stringWithString</em></p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #400080;">NSString</span> <span style="color: #002200;color: #CCC;">*</span>example <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #400080;">NSString</span> stringWithString<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;someText&quot;</span><span style="color: #002200;color: #CCC;">&#93;</span>;</pre></div></div>

<p>Which is equal to:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #400080;">NSString</span> <span style="color: #002200;color: #CCC;">*</span>example <span style="color: #002200;color: #CCC;">=</span>
 <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #400080;">NSString</span> alloc<span style="color: #002200;color: #CCC;">&#93;</span> initWithString<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;someText&quot;</span><span style="color: #002200;color: #CCC;">&#93;</span> autorelease<span style="color: #002200;color: #CCC;">&#93;</span>;</pre></div></div>

<p><strong>Autorelease</strong></p>
<p><em>What if you want to have a method that returns an NSString?</em></p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #002200;color: #CCC;">-</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #400080;">NSString</span><span style="color: #002200;color: #CCC;">*</span><span style="color: #002200;color: #CCC;">&#41;</span>returnString<span style="color: #002200;color: #CCC;">&#123;</span>
<span style="color: #400080;">NSString</span> <span style="color: #002200;color: #CCC;">*</span>stringToReturn <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #400080;">NSString</span> alloc<span style="color: #002200;color: #CCC;">&#93;</span> initWithString<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;hello&quot;</span><span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #11740a; font-style: italic;">// if you release it the string will be deallocated</span>
<span style="color: #11740a; font-style: italic;">// and the application will crash.</span>
<span style="color: #11740a; font-style: italic;">// If you don't release it then you will have a leak.</span>
<span style="color: #a61390;color: #B83A24;">return</span> stringToReturn;
<span style="color: #002200;color: #CCC;">&#125;</span></pre></div></div>

<p><em>So what can we do? We can call the autorelease method which simply indicates that the object will be released in the future.</em></p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #002200;color: #CCC;">-</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #400080;">NSString</span><span style="color: #002200;color: #CCC;">*</span><span style="color: #002200;color: #CCC;">&#41;</span>returnString<span style="color: #002200;color: #CCC;">&#123;</span>
<span style="color: #400080;">NSString</span> <span style="color: #002200;color: #CCC;">*</span>stringToReturn <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #400080;">NSString</span> alloc<span style="color: #002200;color: #CCC;">&#93;</span> initWithString<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;hello&quot;</span><span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #002200;color: #CCC;">&#91;</span>stringToReturn autorelease<span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #a61390;color: #B83A24;">return</span> stringToReturn;
<span style="color: #002200;color: #CCC;">&#125;</span></pre></div></div>

<p><strong>Autorelease Pool</strong><br />
Every time you call the autorelease method from an object, is added to the outer-most autorelease pool. When the pool is release or drained, it simply sends release to all the objects in the pool. More precisely:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #11740a; font-style: italic;">// create your own little autorelease pool</span>
<span style="color: #400080;">NSAutoreleasePool</span> <span style="color: #002200;color: #CCC;">*</span>pool <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #400080;">NSAutoreleasePool</span> alloc<span style="color: #002200;color: #CCC;">&#93;</span> init<span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #11740a; font-style: italic;">// these objects get added to the autorelease pool you created above </span>
<span style="color: #400080;">NSString</span>  <span style="color: #002200;color: #CCC;">*</span>string1 <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span>self returnString<span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #400080;">NSString</span>  <span style="color: #002200;color: #CCC;">*</span>string2 <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span>self returnString<span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #11740a; font-style: italic;">// use the above strings ... ...</span>
<span style="color: #11740a; font-style: italic;">// they will be released when the pool is released</span>
<span style="color: #002200;color: #CCC;">&#91;</span>pool release<span style="color: #002200;color: #CCC;">&#93;</span>; <span style="color: #11740a; font-style: italic;">// all objects added to this pool are released</span></pre></div></div>

<p>This concludes todays post <img src='http://chamelo.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  More will come regarding the properties in Objective-C.</p>

]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/memory-management-part-1/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Macros</title>
		<link>http://chamelo.co.uk/macros</link>
		<comments>http://chamelo.co.uk/macros#comments</comments>
		<pubDate>Fri, 27 May 2011 20:02:07 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Cocoa-Touch]]></category>
		<category><![CDATA[Macros]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=494</guid>
		<description><![CDATA[Clearly nothing special but I am using them a lot when I write code. They called macros, and they will speed up your development for sure. Instead of writing all the time the same code (which is usually long), you can write your own macro, using a name of your choice. Here is a simple [...]]]></description>
			<content:encoded><![CDATA[
<p>Clearly nothing special but I am using them a lot when I write code. They called macros, and they will speed up your development for sure. Instead of writing all the time the same code (which is usually long), you can write your own macro, using a name of your choice.</p>
<p>Here is a simple example:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #400080;">NSUserDefaults</span> standardUserDefaults<span style="color: #002200;color: #CCC;">&#93;</span> integerForKey<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span>x<span style="color: #002200;color: #CCC;">&#41;</span><span style="color: #002200;color: #CCC;">&#93;</span></pre></div></div>

<p>You can write your macro:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #6e371a;color: #CDC;">#define UDSI(x) [[NSUserDefaults standardUserDefaults] integerForKey:(x)]</span></pre></div></div>

<p>Where UDSI is the name of the macro, in this case <strong>U</strong>ser<strong>D</strong>efaults <strong>s</strong>tandardUserDefaults <strong>i</strong>ntegerForKey and call it  </p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;">UDSI<span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;keyName&quot;</span><span style="color: #002200;color: #CCC;">&#41;</span>;</pre></div></div>

<p>You can also have multiple arguments:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #6e371a;color: #CDC;">#define NSS(str, ...) ((NSString *)[NSString stringWithFormat:(str), ##__VA_ARGS__])</span>
<span style="color: #400080;">NSString</span> <span style="color: #002200;color: #CCC;">*</span> geoString <span style="color: #002200;color: #CCC;">=</span> MString<span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;%@-%@&quot;</span>,object1,object2<span style="color: #002200;color: #CCC;">&#41;</span>;</pre></div></div>

<p>Here, there are two links with macros: <a href="http://snipplr.com/view/2453/useful-cocoa-macros/">1</a> &amp; <a href="http://www.dizzey.com/development/ios/6-useful-objective-c-cocoa-macros/">2</a><br />
You can find more if you google, but you can always write your own <img src='http://chamelo.co.uk/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>

]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/macros/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thoughts on my individual project Part 1</title>
		<link>http://chamelo.co.uk/thoughts-on-my-individual-project-part-1</link>
		<comments>http://chamelo.co.uk/thoughts-on-my-individual-project-part-1#comments</comments>
		<pubDate>Tue, 17 May 2011 17:58:50 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa-Touch]]></category>
		<category><![CDATA[Project]]></category>
		<category><![CDATA[University]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=466</guid>
		<description><![CDATA[Hello again, This post is regarding my individual project at the university. I am quite excited because my supervisor was flexible on the implementation language and the platform. Hence, I decided to develop my project in objective-C for the iPad. &#160; &#160; What is the project about? The purpose of the project is to model [...]]]></description>
			<content:encoded><![CDATA[
<p>Hello again,</p>
<p style="text-align: left;">This post is regarding my individual project at the university. I am quite excited because my supervisor was flexible on the implementation language and the platform. Hence, I decided to develop my project in objective-C for the iPad. <img src='http://chamelo.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: left;">&nbsp;</p>
<p style="text-align: center;"><a href="http://chamelo.co.uk/wp-content/uploads/2011/05/IMG_0370.jpg"><img class="aligncenter size-large wp-image-467" style="border: 1px solid black;" title="iPad App" src="http://chamelo.co.uk/wp-content/uploads/2011/05/IMG_0370-1024x741.jpg" alt="" width="442" height="320" /></a></p>
<p>&nbsp;<br />
<strong>What is the project about?</strong><br />
The purpose of the project is to model twitter trending topics.</p>
<p><strong>What do I mean with model?</strong><br />
I really do not know, I have not yet formalised all my ideas around it, but I am getting close.</p>
<p><strong>Why on the iPad? </strong><br />
Few reasons actually, memory management, google maps integration and not mention that I just got the new iPad. <img src='http://chamelo.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
<span id="more-466"></span></p>
<p><strong>The proposal &#8211; </strong>What do I have so far:</p>
<p>1) As starting point is a graphical representation of quantity over time for a particular topic seems reasonable. I am interested to see if Twitter trends are based on quantity or on what Twitter says:</p>
<p>&#8220;Trends are designed to help people discover the most breaking news from across the world, in real-time.&#8221;</p>
<p>2) The part I am looking forward is a graph of keywords. I hope to add the functionality to show the indirect relation of a keyword with other keywords. The keywords can create a huge graph with nodes and edges and a part of the network could be modelled. We will then be able to see what sort of keywords a user is using for a topic of his interest.</p>
<p>The following figure illustrates my idea:</p>
<p style="text-align: center;"><a href="http://chamelo.co.uk/wp-content/uploads/2011/05/example.png"><img class="aligncenter size-full wp-image-472" style="border: 0px solid black;" title="example graph" src="http://chamelo.co.uk/wp-content/uploads/2011/05/example.png" alt="" width="344" height="340" /></a></p>
<p>3)  A tweet can have geographical coordinates (Usually from a mobile device with GPS) and a map could be annotated with the precise location. For this part, I am not so sure! A very small percentage is using geolocation so I assume the results will not be that useful.</p>
<p><a href="http://chamelo.co.uk/wp-content/uploads/2011/05/Screen-shot-2011-05-17-at-18.54.49.png"><img class="aligncenter size-full wp-image-482" title="Screen shot 2011-05-17 at 18.54.49" src="http://chamelo.co.uk/wp-content/uploads/2011/05/Screen-shot-2011-05-17-at-18.54.49.png" alt="" width="526" height="392" /></a></p>
<p>4) Gathering statistical information on a user, like what time of the day do they usually tweet, determining what type of user they are, what is the average of their tweets per day and what keywords are they using could also be implemented for a single user analysis. Well, not really formalised but I am working on it&#8230;</p>
<p>I would love to share the code but I am waiting for some confirmation because it is not my property but belongs to the university. More posts will come regarding the project.</p>
<p><strong>Please if you have any suggestions/ideas to improve it, you are more than welcome to post them below.</strong></p>

]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/thoughts-on-my-individual-project-part-1/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Good old times&#8230;</title>
		<link>http://chamelo.co.uk/good-old-times</link>
		<comments>http://chamelo.co.uk/good-old-times#comments</comments>
		<pubDate>Sat, 14 May 2011 23:50:33 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[Not Cocoa]]></category>
		<category><![CDATA[University]]></category>
		<category><![CDATA[Home]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=448</guid>
		<description><![CDATA[Well first of all this post is not relevant to Cocoa. Is related to the time that drove me towards programming. It was my first sort of &#8220;achievement&#8221; (a coursework at the university during my 2nd year, 4 years ago) and it always reminds me the day my passion begun&#8230; The coursework was to produce [...]]]></description>
			<content:encoded><![CDATA[
<p><center><a href="http://chamelo.co.uk/wp-content/uploads/2011/05/explore.png"><img src="http://chamelo.co.uk/wp-content/uploads/2011/05/explore.png" alt="" title="explore" width="420" height="204" class="aligncenter size-full wp-image-449" /></a></center></p>
<p>Well first of all this post is not relevant to Cocoa. Is related to the time that drove me towards programming. It was my first sort of &#8220;achievement&#8221; (a coursework at the university during my 2nd year, 4 years ago) and it always reminds me the day my passion begun&#8230;</p>
<p>The coursework was to produce an &#8220;ls&#8221;-like command for the terminal. It was my first poem and here is the code: (please do not mention any bugs because I cannot submit the coursework again <img src='http://chamelo.co.uk/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  )</p>
<p><span id="more-448"></span></p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;color: #9CC276;"><span style="color: #339933;">#include &lt;stdlib.h&gt; /* Declare data types such as char,int e.t.c. */</span>
<span style="color: #339933;">#include &lt;stdio.h&gt; /* Input / Output */</span>
<span style="color: #339933;">#include &lt;sys/types.h&gt; /* Defines data types such as ino_t,off_t e.t.c. */</span>
<span style="color: #339933;">#include &lt;sys/stat.h&gt; /* Defines the structure of the data returned from stat*/</span>
<span style="color: #339933;">#include &lt;dirent.h&gt; /* required for directory functions */</span>
<span style="color: #339933;">#include &lt;strings.h&gt; /* required for strrchr and strcpy functions */</span>
<span style="color: #339933;">#include &lt;time.h&gt; /* required for time functions */</span>
<span style="color: #339933;">#include &lt;unistd.h&gt; /* required for R_OK W_OK X_OK functions */</span>
<span style="color: #339933;">#include &lt;grp.h&gt; /* required for Group Details */</span>
<span style="color: #339933;">#include &lt;pwd.h&gt; /* required for User Details */</span>
&nbsp;
<span style="color: #993333;color: #B83A24;">unsigned</span> <span style="color: #993333;color: #B83A24;">int</span> a<span style="color: #339933;color: #CCC;">;</span> <span style="color: #666666; font-style: italic;color: #CDC;">// use to count the total items</span>
<span style="color: #993333;color: #B83A24;">unsigned</span> <span style="color: #993333;color: #B83A24;">int</span> b<span style="color: #339933;color: #CCC;">;</span> <span style="color: #666666; font-style: italic;color: #CDC;">// use to add the values of size or block</span>
<span style="color: #993333;color: #B83A24;">unsigned</span> <span style="color: #993333;color: #B83A24;">int</span> c<span style="color: #339933;color: #CCC;">;</span> <span style="color: #666666; font-style: italic;color: #CDC;">// used for the sub function </span>
&nbsp;
<span style="color: #993333;color: #B83A24;">int</span> getfilesize<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #993333;color: #B83A24;">char</span> <span style="color: #339933;color: #CCC;">*</span>filename<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span> 								<span style="color: #666666; font-style: italic;color: #CDC;">//Method to get the size of the file.</span>
	<span style="color: #993333;color: #B83A24;">struct</span> stat file<span style="color: #339933;color: #CCC;">;</span> 								<span style="color: #666666; font-style: italic;color: #CDC;">//This structure will be used to query file status</span>
	<span style="color: #b1b100;color: #B83A24;">if</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>stat<span style="color: #009900;color: #CCC;">&#40;</span>filename<span style="color: #339933;color: #CCC;">,</span> <span style="color: #339933;color: #CCC;">&amp;</span><span style="color: #339933;">#038;file)){return file.st_size/1024;}					//validate if it can retrieve the size or not</span>
	<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;Cannot retrive size for %s <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>filename<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #b1b100;color: #B83A24;">return</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #339933;color: #CCC;">;</span>
<span style="color: #009900;color: #CCC;">&#125;</span>
&nbsp;
time_t getTime<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #993333;color: #B83A24;">char</span> <span style="color: #339933;color: #CCC;">*</span>filename<span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span>                 						<span style="color: #666666; font-style: italic;color: #CDC;">//Method to get modification time in seconds since 1970 of a file.</span>
	<span style="color: #993333;color: #B83A24;">struct</span> stat file<span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #b1b100;color: #B83A24;">if</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>stat<span style="color: #009900;color: #CCC;">&#40;</span>filename<span style="color: #339933;color: #CCC;">,</span> <span style="color: #339933;color: #CCC;">&amp;</span><span style="color: #339933;">#038;file)){return file.st_mtime;}</span>
	<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;Cannot retrieve time for %s <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>filename<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #b1b100;color: #B83A24;">return</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #339933;color: #CCC;">;</span>
<span style="color: #009900;color: #CCC;">&#125;</span>
&nbsp;
mode_t getMode<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #993333;color: #B83A24;">char</span> <span style="color: #339933;color: #CCC;">*</span>filename<span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span>								<span style="color: #666666; font-style: italic;color: #CDC;">//Method to get the mode of a file.</span>
	<span style="color: #993333;color: #B83A24;">struct</span> stat file<span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #b1b100;color: #B83A24;">if</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>stat<span style="color: #009900;color: #CCC;">&#40;</span>filename<span style="color: #339933;color: #CCC;">,</span> <span style="color: #339933;color: #CCC;">&amp;</span><span style="color: #339933;">#038;file)){	return file.st_mode;}</span>
	<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;Cannot retrieve mode for %s <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>filename<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #b1b100;color: #B83A24;">return</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #339933;color: #CCC;">;</span>
<span style="color: #009900;color: #CCC;">&#125;</span>
&nbsp;
uid_t getUser<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #993333;color: #B83A24;">char</span> <span style="color: #339933;color: #CCC;">*</span>filename<span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span>		 						<span style="color: #666666; font-style: italic;color: #CDC;">//Method to get the user id of a file.</span>
	<span style="color: #993333;color: #B83A24;">struct</span> stat file<span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #b1b100;color: #B83A24;">if</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>stat<span style="color: #009900;color: #CCC;">&#40;</span>filename<span style="color: #339933;color: #CCC;">,</span> <span style="color: #339933;color: #CCC;">&amp;</span><span style="color: #339933;">#038;file)){return file.st_uid;}</span>
	<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;Cannot retrieve user id for %s <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>filename<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #b1b100;color: #B83A24;">return</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #339933;color: #CCC;">;</span>
<span style="color: #009900;color: #CCC;">&#125;</span>
&nbsp;
gid_t getGroup<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #993333;color: #B83A24;">char</span> <span style="color: #339933;color: #CCC;">*</span>filename<span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span>								<span style="color: #666666; font-style: italic;color: #CDC;">//Method to get the group id of a file.</span>
	<span style="color: #993333;color: #B83A24;">struct</span> stat file<span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #b1b100;color: #B83A24;">if</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>stat<span style="color: #009900;color: #CCC;">&#40;</span>filename<span style="color: #339933;color: #CCC;">,</span> <span style="color: #339933;color: #CCC;">&amp;</span><span style="color: #339933;">#038;file)){return file.st_gid;	}</span>
	<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;Cannot retrieve group id for %s <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>filename<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #b1b100;color: #B83A24;">return</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #339933;color: #CCC;">;</span>
<span style="color: #009900;color: #CCC;">&#125;</span>
&nbsp;
<span style="color: #993333;color: #B83A24;">int</span> getdirSize<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #993333;color: #B83A24;">char</span> <span style="color: #339933;color: #CCC;">*</span>pathname<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>								<span style="color: #666666; font-style: italic;color: #CDC;">//Method to get the size of a directory</span>
	<span style="color: #993333;color: #B83A24;">char</span> newpath<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1024</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">;</span>
	DIR <span style="color: #339933;color: #CCC;">*</span>directory<span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #993333;color: #B83A24;">struct</span> dirent <span style="color: #339933;color: #CCC;">*</span>entry<span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #993333;color: #B83A24;">unsigned</span> <span style="color: #993333;color: #B83A24;">char</span> done <span style="color: #339933;color: #CCC;">=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #993333;color: #B83A24;">struct</span> stat file<span style="color: #339933;color: #CCC;">;</span>
&nbsp;
	directory<span style="color: #339933;color: #CCC;">=</span>opendir<span style="color: #009900;color: #CCC;">&#40;</span>pathname<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #b1b100;color: #B83A24;">while</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>done<span style="color: #009900;color: #CCC;">&#41;</span>
	<span style="color: #009900;color: #CCC;">&#123;</span>
		entry<span style="color: #339933;color: #CCC;">=</span>readdir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
		<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>entry <span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span>    done<span style="color: #339933;color: #CCC;">=</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #339933;color: #CCC;">;</span>                      <span style="color: #009900;color: #CCC;">&#125;</span>
		<span style="color: #b1b100;color: #B83A24;">else</span><span style="color: #009900;color: #CCC;">&#123;</span>
			<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#40;</span>strncmp<span style="color: #009900;color: #CCC;">&#40;</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #339933;color: #CCC;">,</span> <span style="color: #ff0000;color: #666666;">&quot;.&quot;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
				sprintf<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;%s/%s&quot;</span><span style="color: #339933;color: #CCC;">,</span>pathname<span style="color: #339933;color: #CCC;">,</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
				stat<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #339933;color: #CCC;">,&amp;</span><span style="color: #339933;">#038;file);</span>
				<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>S_ISREG<span style="color: #009900;color: #CCC;">&#40;</span>file.<span style="color: #202020;">st_mode</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span> b <span style="color: #339933;color: #CCC;">=</span> b <span style="color: #339933;color: #CCC;">+</span> getfilesize<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
				<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>S_ISDIR<span style="color: #009900;color: #CCC;">&#40;</span>file.<span style="color: #202020;">st_mode</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span> getdirSize<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
				a <span style="color: #339933;color: #CCC;">++;</span>
			<span style="color: #009900;color: #CCC;">&#125;</span>
		<span style="color: #009900;color: #CCC;">&#125;</span>
	<span style="color: #009900;color: #CCC;">&#125;</span>
	closedir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #b1b100;color: #B83A24;">return</span> b<span style="color: #339933;color: #CCC;">;</span>
<span style="color: #009900;color: #CCC;">&#125;</span>
&nbsp;
<span style="color: #993333;color: #B83A24;">void</span> getactualtype<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #993333;color: #B83A24;">char</span> <span style="color: #339933;color: #CCC;">*</span>filename<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>								<span style="color: #666666; font-style: italic;color: #CDC;">//Method to execute file command</span>
	<span style="color: #993333;color: #B83A24;">int</span> status<span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #993333;color: #B83A24;">int</span> pid<span style="color: #339933;color: #CCC;">;</span>   <span style="color: #666666; font-style: italic;color: #CDC;">// process id of child which execs command</span>
	<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #339933;color: #CCC;">==</span> <span style="color: #009900;color: #CCC;">&#40;</span>pid <span style="color: #339933;color: #CCC;">=</span> fork<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
		execlp<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;file&quot;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;file&quot;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;-N&quot;</span><span style="color: #339933;color: #CCC;">,</span>filename<span style="color: #339933;color: #CCC;">,</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #993333;color: #B83A24;">char</span> <span style="color: #339933;color: #CCC;">*</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>	<span style="color: #666666; font-style: italic;color: #CDC;">// file -N executed to get name and type of file. [Better look on the output]</span>
		exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #009900;color: #CCC;">&#125;</span>
	<span style="color: #b1b100;color: #B83A24;">while</span> <span style="color: #009900;color: #CCC;">&#40;</span>pid <span style="color: #339933;color: #CCC;">!=</span> waitpid<span style="color: #009900;color: #CCC;">&#40;</span>pid<span style="color: #339933;color: #CCC;">,&amp;</span><span style="color: #339933;">#038;status,0));</span>
<span style="color: #009900;color: #CCC;">&#125;</span>
&nbsp;
<span style="color: #993333;color: #B83A24;">void</span> getinode<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #993333;color: #B83A24;">char</span> <span style="color: #339933;color: #CCC;">*</span>filename<span style="color: #339933;color: #CCC;">,</span><span style="color: #993333;color: #B83A24;">struct</span> stat file<span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span>						<span style="color: #666666; font-style: italic;color: #CDC;">//Method to print the name and the st number of a file.</span>
	<span style="color: #b1b100;color: #B83A24;">if</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>stat<span style="color: #009900;color: #CCC;">&#40;</span>filename<span style="color: #339933;color: #CCC;">,</span> <span style="color: #339933;color: #CCC;">&amp;</span><span style="color: #339933;">#038;file)){</span>
		<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;Inode no: %-10i file :%s <span style="color: #000099; font-weight: bold;">\t</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>file.<span style="color: #202020;">st_ino</span><span style="color: #339933;color: #CCC;">,</span>filename<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #009900;color: #CCC;">&#125;</span>
<span style="color: #009900;color: #CCC;">&#125;</span>
&nbsp;
<span style="color: #993333;color: #B83A24;">void</span> gethidden<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #993333;color: #B83A24;">char</span> <span style="color: #339933;color: #CCC;">*</span>filename<span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span>								<span style="color: #666666; font-style: italic;color: #CDC;">//Method to print all the fine names including the hidden ones.</span>
	<span style="color: #993333;color: #B83A24;">struct</span> stat file<span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #b1b100;color: #B83A24;">if</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>stat<span style="color: #009900;color: #CCC;">&#40;</span>filename<span style="color: #339933;color: #CCC;">,</span> <span style="color: #339933;color: #CCC;">&amp;</span><span style="color: #339933;">#038;file)){printf(&quot;file :%s \n&quot;,filename);}</span>
<span style="color: #009900;color: #CCC;">&#125;</span>
&nbsp;
<span style="color: #993333;color: #B83A24;">void</span> getperm<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #993333;color: #B83A24;">char</span> <span style="color: #339933;color: #CCC;">*</span>filename<span style="color: #339933;color: #CCC;">,</span><span style="color: #993333;color: #B83A24;">struct</span> stat file<span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span>						<span style="color: #666666; font-style: italic;color: #CDC;">//Method to print the permissions of the Owner , Group and Others.</span>
	<span style="color: #b1b100;color: #B83A24;">if</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>stat<span style="color: #009900;color: #CCC;">&#40;</span>filename<span style="color: #339933;color: #CCC;">,</span> <span style="color: #339933;color: #CCC;">&amp;</span><span style="color: #339933;">#038;file))</span>
	<span style="color: #009900;color: #CCC;">&#123;</span>
		mode_t  mode <span style="color: #339933;color: #CCC;">=</span> getMode<span style="color: #009900;color: #CCC;">&#40;</span>filename<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
		<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#40;</span>mode <span style="color: #339933;color: #CCC;">&amp;</span><span style="color: #339933;">#038; 0400) == 0){	printf(&quot;Owner cannot read ,&quot;);}</span>
		<span style="color: #b1b100;color: #B83A24;">else</span><span style="color: #009900;color: #CCC;">&#123;</span>  <span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;Owner can read ,&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
		<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#40;</span>mode <span style="color: #339933;color: #CCC;">&amp;</span><span style="color: #339933;">#038; 0200) == 0){  	printf(&quot; cannot write ,&quot;);}</span>
		<span style="color: #b1b100;color: #B83A24;">else</span><span style="color: #009900;color: #CCC;">&#123;</span>	<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot; can write ,&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
		<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#40;</span>mode <span style="color: #339933;color: #CCC;">&amp;</span><span style="color: #339933;">#038; 0100) == 0){	printf(&quot; cannot execute || %s\n&quot;,filename);}</span>
		<span style="color: #b1b100;color: #B83A24;">else</span><span style="color: #009900;color: #CCC;">&#123;</span>	<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot; can execute || %s<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>filename<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
		<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#40;</span>mode <span style="color: #339933;color: #CCC;">&amp;</span><span style="color: #339933;">#038; 0040) == 0){	printf(&quot;Group cannot read ,&quot;);}</span>
		<span style="color: #b1b100;color: #B83A24;">else</span><span style="color: #009900;color: #CCC;">&#123;</span>	<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;Group can read ,&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
		<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#40;</span>mode <span style="color: #339933;color: #CCC;">&amp;</span><span style="color: #339933;">#038; 0020) == 0){  printf(&quot; cannot write ,&quot;);}</span>
		<span style="color: #b1b100;color: #B83A24;">else</span><span style="color: #009900;color: #CCC;">&#123;</span>	<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot; can write ,&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
		<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#40;</span>mode <span style="color: #339933;color: #CCC;">&amp;</span><span style="color: #339933;">#038; 0010) == 0){	printf(&quot; cannot execute || %s\n&quot;,filename);}</span>
		<span style="color: #b1b100;color: #B83A24;">else</span><span style="color: #009900;color: #CCC;">&#123;</span>	<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot; can execute || %s<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>filename<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
		<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#40;</span>mode <span style="color: #339933;color: #CCC;">&amp;</span><span style="color: #339933;">#038; 0004) == 0){	printf(&quot;Others cannot read ,&quot;);}</span>
		<span style="color: #b1b100;color: #B83A24;">else</span><span style="color: #009900;color: #CCC;">&#123;</span>	<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;Others can read ,&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
		<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#40;</span>mode <span style="color: #339933;color: #CCC;">&amp;</span><span style="color: #339933;">#038; 0002) == 0){  printf(&quot; cannot write ,&quot;);}</span>
		<span style="color: #b1b100;color: #B83A24;">else</span><span style="color: #009900;color: #CCC;">&#123;</span>	<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot; can write ,&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
		<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#40;</span>mode <span style="color: #339933;color: #CCC;">&amp;</span><span style="color: #339933;">#038; 0001) == 0){	printf(&quot; cannot execute || %s\n&quot;,filename);}</span>
		<span style="color: #b1b100;color: #B83A24;">else</span><span style="color: #009900;color: #CCC;">&#123;</span>	<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot; can execute || %s<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>filename<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
	<span style="color: #009900;color: #CCC;">&#125;</span>
<span style="color: #009900;color: #CCC;">&#125;</span>
&nbsp;
<span style="color: #993333;color: #B83A24;">void</span> getpermofcu<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #993333;color: #B83A24;">char</span> <span style="color: #339933;color: #CCC;">*</span>filename<span style="color: #339933;color: #CCC;">,</span><span style="color: #993333;color: #B83A24;">struct</span> stat file<span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span>  						<span style="color: #666666; font-style: italic;color: #CDC;">//Method to print the permissions of the current user.</span>
	<span style="color: #993333;color: #B83A24;">int</span> access <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #993333;color: #B83A24;">const</span> <span style="color: #993333;color: #B83A24;">char</span> <span style="color: #339933;color: #CCC;">*</span>filename<span style="color: #339933;color: #CCC;">,</span> <span style="color: #993333;color: #B83A24;">int</span> how<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
	access <span style="color: #009900;color: #CCC;">&#40;</span>filename<span style="color: #339933;color: #CCC;">,</span> file.<span style="color: #202020;">st_mode</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #b1b100;color: #B83A24;">if</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>stat<span style="color: #009900;color: #CCC;">&#40;</span>filename<span style="color: #339933;color: #CCC;">,</span> <span style="color: #339933;color: #CCC;">&amp;</span><span style="color: #339933;">#038;file))</span>
	<span style="color: #009900;color: #CCC;">&#123;</span>
		<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span> access<span style="color: #009900;color: #CCC;">&#40;</span>filename<span style="color: #339933;color: #CCC;">,</span>R_OK<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==-</span><span style="color: #0000dd;color: #DDD;">1</span> <span style="color: #009900;color: #CCC;">&#41;</span>
		<span style="color: #009900;color: #CCC;">&#123;</span> <span style="color: #000066;color: #8FB394;">printf</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;You can not read ||&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
		<span style="color: #b1b100;color: #B83A24;">else</span><span style="color: #009900;color: #CCC;">&#123;</span> <span style="color: #000066;color: #8FB394;">printf</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;You can read ||&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
		<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span> access<span style="color: #009900;color: #CCC;">&#40;</span>filename<span style="color: #339933;color: #CCC;">,</span>W_OK<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==-</span><span style="color: #0000dd;color: #DDD;">1</span> <span style="color: #009900;color: #CCC;">&#41;</span>
		<span style="color: #009900;color: #CCC;">&#123;</span> <span style="color: #000066;color: #8FB394;">printf</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot; You can not write ||&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
		<span style="color: #b1b100;color: #B83A24;">else</span><span style="color: #009900;color: #CCC;">&#123;</span> <span style="color: #000066;color: #8FB394;">printf</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot; You can write ||&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
		<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span> access<span style="color: #009900;color: #CCC;">&#40;</span>filename<span style="color: #339933;color: #CCC;">,</span>X_OK<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==-</span><span style="color: #0000dd;color: #DDD;">1</span> <span style="color: #009900;color: #CCC;">&#41;</span>
		<span style="color: #009900;color: #CCC;">&#123;</span> <span style="color: #000066;color: #8FB394;">printf</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot; You can not execute || %s <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>filename<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
		<span style="color: #b1b100;color: #B83A24;">else</span><span style="color: #009900;color: #CCC;">&#123;</span> <span style="color: #000066;color: #8FB394;">printf</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot; You can execute || %s <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>filename<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
	<span style="color: #009900;color: #CCC;">&#125;</span>
<span style="color: #009900;color: #CCC;">&#125;</span>
&nbsp;
<span style="color: #993333;color: #B83A24;">void</span> getunameandgname<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #993333;color: #B83A24;">char</span> <span style="color: #339933;color: #CCC;">*</span>filename<span style="color: #339933;color: #CCC;">,</span><span style="color: #993333;color: #B83A24;">struct</span> stat file<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span> 					<span style="color: #666666; font-style: italic;color: #CDC;">//Method to get the user name with and the group members.</span>
	<span style="color: #b1b100;color: #B83A24;">if</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>stat<span style="color: #009900;color: #CCC;">&#40;</span>filename<span style="color: #339933;color: #CCC;">,</span> <span style="color: #339933;color: #CCC;">&amp;</span><span style="color: #339933;">#038;file))</span>
	<span style="color: #009900;color: #CCC;">&#123;</span>
		uid_t uid <span style="color: #339933;color: #CCC;">=</span> getUser<span style="color: #009900;color: #CCC;">&#40;</span>filename<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
		gid_t gid <span style="color: #339933;color: #CCC;">=</span> getGroup<span style="color: #009900;color: #CCC;">&#40;</span>filename<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
		<span style="color: #993333;color: #B83A24;">struct</span> passwd<span style="color: #339933;color: #CCC;">*</span> upwd <span style="color: #339933;color: #CCC;">=</span> getpwuid<span style="color: #009900;color: #CCC;">&#40;</span>uid<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>	<span style="color: #808080; font-style: italic;color: #CDC;">/* get the information about the user. */</span>
		<span style="color: #993333;color: #B83A24;">struct</span> group<span style="color: #339933;color: #CCC;">*</span> gpwd <span style="color: #339933;color: #CCC;">=</span> getgrgid<span style="color: #009900;color: #CCC;">&#40;</span>gid<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>		<span style="color: #808080; font-style: italic;color: #CDC;">/* get the information about the group. */</span>
&nbsp;
		<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>upwd<span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span><span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;User %i does not exist.<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>uid<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span> <span style="color: #009900;color: #CCC;">&#125;</span>	<span style="color: #808080; font-style: italic;color: #CDC;">/* make sure this user actually exists. */</span>
		<span style="color: #b1b100;color: #B83A24;">else</span><span style="color: #009900;color: #CCC;">&#123;</span><span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;file: %-45s Owner: %s <span style="color: #000099; font-weight: bold;">\t</span> Group id: %i || &quot;</span><span style="color: #339933;color: #CCC;">,</span>filename<span style="color: #339933;color: #CCC;">,</span>upwd<span style="color: #339933;color: #CCC;">-&gt;</span>pw_name<span style="color: #339933;color: #CCC;">,</span>getGroup<span style="color: #009900;color: #CCC;">&#40;</span>filename<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
		<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>gpwd<span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span><span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;group %i does not exist.<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>gid<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>  <span style="color: #808080; font-style: italic;color: #CDC;">/* make sure this group actually exists. */</span>
		<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #009900;color: #CCC;">&#123;</span>
			<span style="color: #993333;color: #B83A24;">char</span><span style="color: #339933;color: #CCC;">**</span> p_member<span style="color: #339933;color: #CCC;">;</span>
			<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;Members of group: &quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
			<span style="color: #b1b100;color: #B83A24;">for</span> <span style="color: #009900;color: #CCC;">&#40;</span>p_member <span style="color: #339933;color: #CCC;">=</span> gpwd<span style="color: #339933;color: #CCC;">-&gt;</span>gr_mem<span style="color: #339933;color: #CCC;">;</span> <span style="color: #339933;color: #CCC;">*</span>p_member<span style="color: #339933;color: #CCC;">;</span> p_member<span style="color: #339933;color: #CCC;">++</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span><span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot; (%s) &quot;</span><span style="color: #339933;color: #CCC;">,</span> <span style="color: #339933;color: #CCC;">*</span>p_member<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
			<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
		<span style="color: #009900;color: #CCC;">&#125;</span>
	<span style="color: #009900;color: #CCC;">&#125;</span>
<span style="color: #009900;color: #CCC;">&#125;</span>
&nbsp;
<span style="color: #993333;color: #B83A24;">void</span> returnDetails<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #993333;color: #B83A24;">char</span> <span style="color: #339933;color: #CCC;">*</span>filename<span style="color: #339933;color: #CCC;">,</span><span style="color: #993333;color: #B83A24;">struct</span> stat file<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>						<span style="color: #666666; font-style: italic;color: #CDC;">//Method to print the details of file</span>
	<span style="color: #993333;color: #B83A24;">int</span> size <span style="color: #339933;color: #CCC;">=</span> getfilesize<span style="color: #009900;color: #CCC;">&#40;</span>filename<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #993333;color: #B83A24;">int</span> tim <span style="color: #339933;color: #CCC;">=</span> getTime<span style="color: #009900;color: #CCC;">&#40;</span>filename<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
	time_t times <span style="color: #339933;color: #CCC;">=</span> tim<span style="color: #339933;color: #CCC;">;</span>
&nbsp;
	<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #b1b100;color: #B83A24;">if</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>stat<span style="color: #009900;color: #CCC;">&#40;</span>filename<span style="color: #339933;color: #CCC;">,</span> <span style="color: #339933;color: #CCC;">&amp;</span><span style="color: #339933;">#038;file)){</span>
		getactualtype<span style="color: #009900;color: #CCC;">&#40;</span>filename<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
		<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#40;</span>getMode<span style="color: #009900;color: #CCC;">&#40;</span>filename<span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #339933;color: #CCC;">&amp;</span><span style="color: #339933;">#038; S_IFDIR) == S_IFDIR) {	//Each returns a non-zero value if the file is of that type, or 0 if it is not.</span>
			b<span style="color: #339933;color: #CCC;">=</span><span style="color: #0000dd;color: #DDD;">0</span><span style="color: #339933;color: #CCC;">;</span>
			<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;Size kb:%-10i Last date of mod: %-10s&quot;</span><span style="color: #339933;color: #CCC;">,</span>getdirSize<span style="color: #009900;color: #CCC;">&#40;</span>filename<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">,</span>ctime<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">&amp;</span><span style="color: #339933;">#038;times));</span>
		<span style="color: #009900;color: #CCC;">&#125;</span>
		<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#40;</span>getMode<span style="color: #009900;color: #CCC;">&#40;</span>filename<span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #339933;color: #CCC;">&amp;</span><span style="color: #339933;">#038; S_IFREG) == S_IFREG) {</span>
			<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;Size kb:%-10i Last date of mod: %s&quot;</span><span style="color: #339933;color: #CCC;">,</span>size<span style="color: #339933;color: #CCC;">,</span>ctime<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">&amp;</span><span style="color: #339933;">#038;times));</span>
		<span style="color: #009900;color: #CCC;">&#125;</span>
	<span style="color: #009900;color: #CCC;">&#125;</span>
<span style="color: #009900;color: #CCC;">&#125;</span>
&nbsp;
<span style="color: #993333;color: #B83A24;">void</span> sub<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #993333;color: #B83A24;">char</span> <span style="color: #339933;color: #CCC;">*</span>pathname<span style="color: #339933;color: #CCC;">,</span><span style="color: #993333;color: #B83A24;">int</span> lvl<span style="color: #339933;color: #CCC;">,</span><span style="color: #993333;color: #B83A24;">char</span> <span style="color: #339933;color: #CCC;">*</span>s<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>							<span style="color: #666666; font-style: italic;color: #CDC;">//Method print info on any specific depth</span>
	<span style="color: #993333;color: #B83A24;">char</span> newpath<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1024</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">;</span>
	DIR <span style="color: #339933;color: #CCC;">*</span>directory<span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #993333;color: #B83A24;">struct</span> dirent <span style="color: #339933;color: #CCC;">*</span>entry<span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #993333;color: #B83A24;">unsigned</span> <span style="color: #993333;color: #B83A24;">char</span> done <span style="color: #339933;color: #CCC;">=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #993333;color: #B83A24;">struct</span> stat file<span style="color: #339933;color: #CCC;">;</span>
&nbsp;
	directory<span style="color: #339933;color: #CCC;">=</span>opendir<span style="color: #009900;color: #CCC;">&#40;</span>pathname<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #b1b100;color: #B83A24;">while</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>done<span style="color: #009900;color: #CCC;">&#41;</span>
	<span style="color: #009900;color: #CCC;">&#123;</span>
		entry<span style="color: #339933;color: #CCC;">=</span>readdir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
		<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>entry <span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span>    done<span style="color: #339933;color: #CCC;">=</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #339933;color: #CCC;">;</span>                      <span style="color: #009900;color: #CCC;">&#125;</span>
		<span style="color: #b1b100;color: #B83A24;">else</span><span style="color: #009900;color: #CCC;">&#123;</span>
&nbsp;
			<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>s<span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
				<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#40;</span>strncmp<span style="color: #009900;color: #CCC;">&#40;</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #339933;color: #CCC;">,</span> <span style="color: #ff0000;color: #666666;">&quot;.&quot;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
					sprintf<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;%s/%s&quot;</span><span style="color: #339933;color: #CCC;">,</span>pathname<span style="color: #339933;color: #CCC;">,</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
					stat<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #339933;color: #CCC;">,&amp;</span><span style="color: #339933;">#038;file);</span>
					<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>S_ISREG<span style="color: #009900;color: #CCC;">&#40;</span>file.<span style="color: #202020;">st_mode</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span>returnDetails<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #339933;color: #CCC;">,</span>file<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
					<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>S_ISDIR<span style="color: #009900;color: #CCC;">&#40;</span>file.<span style="color: #202020;">st_mode</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span>
						c<span style="color: #339933;color: #CCC;">++;</span>
						returnDetails<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #339933;color: #CCC;">,</span>file<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
						<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>c<span style="color: #339933;color: #CCC;">&lt;</span>lvl<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>sub<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #339933;color: #CCC;">,</span>lvl<span style="color: #339933;color: #CCC;">,</span>s<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span> <span style="color: #009900;color: #CCC;">&#125;</span> 					<span style="color: #009900;color: #CCC;">&#125;</span> 				<span style="color: #009900;color: #CCC;">&#125;</span> 			<span style="color: #009900;color: #CCC;">&#125;</span> 			<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>s<span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;h&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>  				sprintf<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;%s/%s&quot;</span><span style="color: #339933;color: #CCC;">,</span>pathname<span style="color: #339933;color: #CCC;">,</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
				stat<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #339933;color: #CCC;">,&amp;</span><span style="color: #339933;">#038;file);</span>
				<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#40;</span>strncmp<span style="color: #009900;color: #CCC;">&#40;</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #339933;color: #CCC;">,</span> <span style="color: #ff0000;color: #666666;">&quot;.&quot;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>gethidden<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
				<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>S_ISREG<span style="color: #009900;color: #CCC;">&#40;</span>file.<span style="color: #202020;">st_mode</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span>gethidden<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
				<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>S_ISDIR<span style="color: #009900;color: #CCC;">&#40;</span>file.<span style="color: #202020;">st_mode</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span>
					c<span style="color: #339933;color: #CCC;">++;</span>
					gethidden<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
					<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>c<span style="color: #339933;color: #CCC;">&lt;</span>lvl<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>sub<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #339933;color: #CCC;">,</span>lvl<span style="color: #339933;color: #CCC;">,</span>s<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span> <span style="color: #009900;color: #CCC;">&#125;</span> 				<span style="color: #009900;color: #CCC;">&#125;</span> 			<span style="color: #009900;color: #CCC;">&#125;</span> 			<span style="color: #b1b100;color: #B83A24;">else</span><span style="color: #009900;color: #CCC;">&#123;</span> 				<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#40;</span>strncmp<span style="color: #009900;color: #CCC;">&#40;</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #339933;color: #CCC;">,</span> <span style="color: #ff0000;color: #666666;">&quot;.&quot;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
					sprintf<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;%s/%s&quot;</span><span style="color: #339933;color: #CCC;">,</span>pathname<span style="color: #339933;color: #CCC;">,</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
					stat<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #339933;color: #CCC;">,&amp;</span><span style="color: #339933;">#038;file);</span>
					<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>S_ISREG<span style="color: #009900;color: #CCC;">&#40;</span>file.<span style="color: #202020;">st_mode</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span>
						<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>s<span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;i&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>getinode<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #339933;color: #CCC;">,</span>file<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
						<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>s<span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;o&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span> getunameandgname<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #339933;color: #CCC;">,</span>file<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
						<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>s<span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;n&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span> getpermofcu<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #339933;color: #CCC;">,</span>file<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
						<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>s<span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;s&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span> getperm<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #339933;color: #CCC;">,</span>file<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
						<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>s<span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;t&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
							<span style="color: #993333;color: #B83A24;">int</span> filesize <span style="color: #339933;color: #CCC;">=</span> getfilesize<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
							<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;Size kb:%-10i file : 1      %-45s <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>filesize<span style="color: #339933;color: #CCC;">,</span>newpath<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
						<span style="color: #009900;color: #CCC;">&#125;</span>
					<span style="color: #009900;color: #CCC;">&#125;</span>
					<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>S_ISDIR<span style="color: #009900;color: #CCC;">&#40;</span>file.<span style="color: #202020;">st_mode</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span>
						c<span style="color: #339933;color: #CCC;">++;</span>
						<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>s<span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;i&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>getinode<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #339933;color: #CCC;">,</span>file<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
						<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>s<span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;o&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>getunameandgname<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #339933;color: #CCC;">,</span>file<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
						<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>s<span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;n&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>getpermofcu<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #339933;color: #CCC;">,</span>file<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
						<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>s<span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;s&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>getperm<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #339933;color: #CCC;">,</span>file<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
						<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>s<span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;t&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
							b<span style="color: #339933;color: #CCC;">=</span><span style="color: #0000dd;color: #DDD;">0</span><span style="color: #339933;color: #CCC;">;</span>
							<span style="color: #993333;color: #B83A24;">int</span> sid <span style="color: #339933;color: #CCC;">=</span> getdirSize<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
							<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;Size kb:%-10i files: %-6i %-45s <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>sid<span style="color: #339933;color: #CCC;">,</span>a<span style="color: #339933;color: #CCC;">,</span>newpath<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
							a<span style="color: #339933;color: #CCC;">=</span><span style="color: #0000dd;color: #DDD;">0</span><span style="color: #339933;color: #CCC;">;</span>
						<span style="color: #009900;color: #CCC;">&#125;</span>
&nbsp;
						<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>c<span style="color: #339933;color: #CCC;">&lt;</span>lvl<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>sub<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #339933;color: #CCC;">,</span>lvl<span style="color: #339933;color: #CCC;">,</span>s<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span> <span style="color: #009900;color: #CCC;">&#125;</span>		 					<span style="color: #009900;color: #CCC;">&#125;</span> 				<span style="color: #009900;color: #CCC;">&#125;</span> 			<span style="color: #009900;color: #CCC;">&#125;</span> 		<span style="color: #009900;color: #CCC;">&#125;</span> 	<span style="color: #009900;color: #CCC;">&#125;</span> 	closedir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span> 	c<span style="color: #339933;color: #CCC;">=</span><span style="color: #0000dd;color: #DDD;">0</span><span style="color: #339933;color: #CCC;">;</span>  <span style="color: #009900;color: #CCC;">&#125;</span> <span style="color: #993333;color: #B83A24;">void</span> search<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #993333;color: #B83A24;">char</span> <span style="color: #339933;color: #CCC;">*</span>pathname<span style="color: #339933;color: #CCC;">,</span><span style="color: #993333;color: #B83A24;">char</span> <span style="color: #339933;color: #CCC;">*</span>filename<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>							<span style="color: #666666; font-style: italic;color: #CDC;">//Method to search for a file on any given dir 	char newpath[1024]; 	DIR *directory; 	struct dirent *entry; 	unsigned char done = 0; 	struct stat file; 	directory=opendir(pathname); 	while (!done) 	{ 		entry=readdir(directory); 		if (entry == 0) {    done=1;                      } 		else{ 			 			if ((strncmp(entry-&gt;d_name, &quot;.&quot;,1) != 0)){</span>
				sprintf<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;%s/%s&quot;</span><span style="color: #339933;color: #CCC;">,</span>pathname<span style="color: #339933;color: #CCC;">,</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
				stat<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #339933;color: #CCC;">,&amp;</span><span style="color: #339933;">#038;file);</span>
				<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>S_ISREG<span style="color: #009900;color: #CCC;">&#40;</span>file.<span style="color: #202020;">st_mode</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span>
					<span style="color: #b1b100;color: #B83A24;">if</span>  <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #339933;color: #CCC;">,</span>filename<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span><span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;%s<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>newpath<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>	a<span style="color: #339933;color: #CCC;">++;</span><span style="color: #009900;color: #CCC;">&#125;</span>
				<span style="color: #009900;color: #CCC;">&#125;</span>
				<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>S_ISDIR<span style="color: #009900;color: #CCC;">&#40;</span>file.<span style="color: #202020;">st_mode</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span>
					<span style="color: #b1b100;color: #B83A24;">if</span>  <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #339933;color: #CCC;">,</span>filename<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span><span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;%s<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>newpath<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>	a<span style="color: #339933;color: #CCC;">++;</span><span style="color: #009900;color: #CCC;">&#125;</span>
					search<span style="color: #009900;color: #CCC;">&#40;</span>newpath<span style="color: #339933;color: #CCC;">,</span>filename<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
				<span style="color: #009900;color: #CCC;">&#125;</span>
			<span style="color: #009900;color: #CCC;">&#125;</span>
		<span style="color: #009900;color: #CCC;">&#125;</span>
	<span style="color: #009900;color: #CCC;">&#125;</span>
	closedir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
<span style="color: #009900;color: #CCC;">&#125;</span>
&nbsp;
<span style="color: #993333;color: #B83A24;">int</span> main<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #993333;color: #B83A24;">int</span> argc<span style="color: #339933;color: #CCC;">,</span> <span style="color: #993333;color: #B83A24;">char</span><span style="color: #339933;color: #CCC;">**</span> argv<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
	DIR <span style="color: #339933;color: #CCC;">*</span>directory<span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #993333;color: #B83A24;">struct</span> dirent <span style="color: #339933;color: #CCC;">*</span>entry<span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #993333;color: #B83A24;">unsigned</span> <span style="color: #993333;color: #B83A24;">char</span> done <span style="color: #339933;color: #CCC;">=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #993333;color: #B83A24;">int</span> status<span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #993333;color: #B83A24;">struct</span> stat st<span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #993333;color: #B83A24;">int</span> countfiles <span style="color: #339933;color: #CCC;">=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #993333;color: #B83A24;">int</span> access <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #993333;color: #B83A24;">const</span> <span style="color: #993333;color: #B83A24;">char</span> <span style="color: #339933;color: #CCC;">*</span>filename<span style="color: #339933;color: #CCC;">,</span> <span style="color: #993333;color: #B83A24;">int</span> how<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #993333;color: #B83A24;">char</span> dir<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1024</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span> <span style="color: #339933;color: #CCC;">*</span>s<span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #993333;color: #B83A24;">char</span> string<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">256</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #993333;color: #B83A24;">int</span> i<span style="color: #339933;color: #CCC;">;</span> 
&nbsp;
	<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>argc <span style="color: #339933;color: #CCC;">&gt;</span> <span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
		<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;i&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #339933;color: #CCC;">||</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;h&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #339933;color: #CCC;">||</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;s&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span>  <span style="color: #339933;color: #CCC;">||</span>
		<span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;t&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">||</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;n&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">||</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;o&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">||</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;f&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
			<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>argc <span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">4</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
				stat<span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">3</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,&amp;</span><span style="color: #339933;">#038;st);</span>
				<span style="color: #993333;color: #B83A24;">char</span> <span style="color: #339933;color: #CCC;">*</span> s <span style="color: #339933;color: #CCC;">=</span> argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">3</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">;</span>
				i <span style="color: #339933;color: #CCC;">=</span> atoi<span style="color: #009900;color: #CCC;">&#40;</span>s<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
				<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>i<span style="color: #339933;color: #CCC;">!=</span><span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
					<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;f&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
						stat<span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">2</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,&amp;</span><span style="color: #339933;">#038;st);</span>
						<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>S_ISDIR<span style="color: #009900;color: #CCC;">&#40;</span>st.<span style="color: #202020;">st_mode</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span><span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;%s it not a directory<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">2</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
						sub<span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">2</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span>i<span style="color: #339933;color: #CCC;">,</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
						exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
					<span style="color: #009900;color: #CCC;">&#125;</span>
				<span style="color: #009900;color: #CCC;">&#125;</span>
				<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>S_ISDIR<span style="color: #009900;color: #CCC;">&#40;</span>st.<span style="color: #202020;">st_mode</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span><span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;%s it not a directory<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">3</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
				<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;f&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span>	   <span style="color: #009900;color: #CCC;">&#123;</span>
					search<span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">3</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">2</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
					<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>a <span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span><span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;Nothing found named [%s] in %s<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">2</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">3</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
					<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>a <span style="color: #339933;color: #CCC;">&gt;</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span><span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;%i items found in %s<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>a<span style="color: #339933;color: #CCC;">,</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">3</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
					exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
				<span style="color: #009900;color: #CCC;">&#125;</span>
				<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #009900;color: #CCC;">&#123;</span><span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;You need to specify a proper level e.g. 1<span style="color: #000099; font-weight: bold;">\n</span>The syntax is: explore [switches] [pathname] [level]<span style="color: #000099; font-weight: bold;">\n</span>Type: explore --help<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
			<span style="color: #009900;color: #CCC;">&#125;</span>
			<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>argc <span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">3</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
				stat<span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">2</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,&amp;</span><span style="color: #339933;">#038;st);</span>
				<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;f&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span>	   <span style="color: #009900;color: #CCC;">&#123;</span>
					s <span style="color: #339933;color: #CCC;">=</span> getwd <span style="color: #009900;color: #CCC;">&#40;</span>dir<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
					search<span style="color: #009900;color: #CCC;">&#40;</span>s<span style="color: #339933;color: #CCC;">,</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">2</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
					<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>a <span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span><span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;Nothing found named [%s] in the current working directory<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">2</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span><span style="color: #339933;color: #CCC;">;</span>
					<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>a <span style="color: #339933;color: #CCC;">&gt;</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span><span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;%i items found <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>a<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span><span style="color: #339933;color: #CCC;">;</span>
					exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
				<span style="color: #009900;color: #CCC;">&#125;</span>
				<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>S_ISREG<span style="color: #009900;color: #CCC;">&#40;</span>st.<span style="color: #202020;">st_mode</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
					<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;i&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>	getinode<span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">2</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span>st<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>	exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
					<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;h&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>	gethidden<span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">2</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>	exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
					<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;s&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>	getperm<span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">2</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span>st<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>	exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
					<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;n&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>	getpermofcu<span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">2</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span>st<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>	exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
					<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;t&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>	<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;Name :%-45s <span style="color: #000099; font-weight: bold;">\t</span> Size kb:%-15i <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">2</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span>getfilesize<span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">2</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>	exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
					<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;o&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>	getunameandgname<span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">2</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span>st<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>	exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
				<span style="color: #009900;color: #CCC;">&#125;</span>
				<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>S_ISDIR<span style="color: #009900;color: #CCC;">&#40;</span>st.<span style="color: #202020;">st_mode</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
					directory<span style="color: #339933;color: #CCC;">=</span>opendir<span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">2</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
					<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;i&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
						<span style="color: #b1b100;color: #B83A24;">while</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>done<span style="color: #009900;color: #CCC;">&#41;</span>
						<span style="color: #009900;color: #CCC;">&#123;</span>
							entry<span style="color: #339933;color: #CCC;">=</span>readdir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
							<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>entry <span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
								sprintf<span style="color: #009900;color: #CCC;">&#40;</span>string<span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;%s/%s&quot;</span><span style="color: #339933;color: #CCC;">,</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">2</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
								stat<span style="color: #009900;color: #CCC;">&#40;</span>string<span style="color: #339933;color: #CCC;">,&amp;</span><span style="color: #339933;">#038;st);</span>
								<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#40;</span>strncmp<span style="color: #009900;color: #CCC;">&#40;</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #339933;color: #CCC;">,</span> <span style="color: #ff0000;color: #666666;">&quot;.&quot;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>	getinode<span style="color: #009900;color: #CCC;">&#40;</span>string<span style="color: #339933;color: #CCC;">,</span>st<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>	<span style="color: #009900;color: #CCC;">&#125;</span>
							<span style="color: #009900;color: #CCC;">&#125;</span>
							<span style="color: #b1b100;color: #B83A24;">else</span><span style="color: #009900;color: #CCC;">&#123;</span>
								closedir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
								exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
							<span style="color: #009900;color: #CCC;">&#125;</span>
						<span style="color: #009900;color: #CCC;">&#125;</span>
					<span style="color: #009900;color: #CCC;">&#125;</span>
					<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;h&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
						<span style="color: #b1b100;color: #B83A24;">while</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>done<span style="color: #009900;color: #CCC;">&#41;</span>
						<span style="color: #009900;color: #CCC;">&#123;</span>
&nbsp;
							entry<span style="color: #339933;color: #CCC;">=</span>readdir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
							<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>entry <span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span>
								sprintf<span style="color: #009900;color: #CCC;">&#40;</span>string<span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;%s/%s&quot;</span><span style="color: #339933;color: #CCC;">,</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">2</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
								stat<span style="color: #009900;color: #CCC;">&#40;</span>string<span style="color: #339933;color: #CCC;">,&amp;</span><span style="color: #339933;">#038;st);</span>
								gethidden<span style="color: #009900;color: #CCC;">&#40;</span>string<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
							<span style="color: #009900;color: #CCC;">&#125;</span>
							<span style="color: #b1b100;color: #B83A24;">else</span>  <span style="color: #009900;color: #CCC;">&#123;</span>done<span style="color: #339933;color: #CCC;">=</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
						<span style="color: #009900;color: #CCC;">&#125;</span>
						closedir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
						exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
					<span style="color: #009900;color: #CCC;">&#125;</span>
					<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;t&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
						<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;Total size kb :%-10i<span style="color: #000099; font-weight: bold;">\t</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>getdirSize<span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">2</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
						countfiles <span style="color: #339933;color: #CCC;">=</span> countfiles <span style="color: #339933;color: #CCC;">+</span> a<span style="color: #339933;color: #CCC;">;</span>
						<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;Number of the files and folders:%-10i<span style="color: #000099; font-weight: bold;">\t</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>countfiles<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
						exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
					<span style="color: #009900;color: #CCC;">&#125;</span>
					<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;n&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
						<span style="color: #b1b100;color: #B83A24;">while</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>done<span style="color: #009900;color: #CCC;">&#41;</span>
						<span style="color: #009900;color: #CCC;">&#123;</span>
							entry<span style="color: #339933;color: #CCC;">=</span>readdir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
							<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>entry <span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span>
								<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#40;</span>strncmp<span style="color: #009900;color: #CCC;">&#40;</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #339933;color: #CCC;">,</span> <span style="color: #ff0000;color: #666666;">&quot;.&quot;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
									sprintf<span style="color: #009900;color: #CCC;">&#40;</span>string<span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;%s/%s&quot;</span><span style="color: #339933;color: #CCC;">,</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">2</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
									stat<span style="color: #009900;color: #CCC;">&#40;</span>string<span style="color: #339933;color: #CCC;">,&amp;</span><span style="color: #339933;">#038;st);</span>
									getpermofcu<span style="color: #009900;color: #CCC;">&#40;</span>string<span style="color: #339933;color: #CCC;">,</span>st<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
								<span style="color: #009900;color: #CCC;">&#125;</span>
							<span style="color: #009900;color: #CCC;">&#125;</span>
							<span style="color: #b1b100;color: #B83A24;">else</span>  <span style="color: #009900;color: #CCC;">&#123;</span>done<span style="color: #339933;color: #CCC;">=</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
						<span style="color: #009900;color: #CCC;">&#125;</span>
						closedir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
						exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
					<span style="color: #009900;color: #CCC;">&#125;</span>
					<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;s&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
						<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
						<span style="color: #b1b100;color: #B83A24;">while</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>done<span style="color: #009900;color: #CCC;">&#41;</span>
						<span style="color: #009900;color: #CCC;">&#123;</span>
							entry<span style="color: #339933;color: #CCC;">=</span>readdir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
							<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>entry <span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span>
								<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#40;</span>strncmp<span style="color: #009900;color: #CCC;">&#40;</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #339933;color: #CCC;">,</span> <span style="color: #ff0000;color: #666666;">&quot;.&quot;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
									sprintf<span style="color: #009900;color: #CCC;">&#40;</span>string<span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;%s/%s&quot;</span><span style="color: #339933;color: #CCC;">,</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">2</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
									stat<span style="color: #009900;color: #CCC;">&#40;</span>string<span style="color: #339933;color: #CCC;">,&amp;</span><span style="color: #339933;">#038;st);</span>
									getperm<span style="color: #009900;color: #CCC;">&#40;</span>string<span style="color: #339933;color: #CCC;">,</span>st<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
									<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
								<span style="color: #009900;color: #CCC;">&#125;</span>
							<span style="color: #009900;color: #CCC;">&#125;</span>
							<span style="color: #b1b100;color: #B83A24;">else</span>  <span style="color: #009900;color: #CCC;">&#123;</span>done<span style="color: #339933;color: #CCC;">=</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
						<span style="color: #009900;color: #CCC;">&#125;</span>
						closedir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
						exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
					<span style="color: #009900;color: #CCC;">&#125;</span>
					<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;o&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
						<span style="color: #b1b100;color: #B83A24;">while</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>done<span style="color: #009900;color: #CCC;">&#41;</span>
						<span style="color: #009900;color: #CCC;">&#123;</span>
							entry<span style="color: #339933;color: #CCC;">=</span>readdir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
							<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>entry <span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span>
								<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#40;</span>strncmp<span style="color: #009900;color: #CCC;">&#40;</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #339933;color: #CCC;">,</span> <span style="color: #ff0000;color: #666666;">&quot;.&quot;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
									sprintf<span style="color: #009900;color: #CCC;">&#40;</span>string<span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;%s/%s&quot;</span><span style="color: #339933;color: #CCC;">,</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">2</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
									stat<span style="color: #009900;color: #CCC;">&#40;</span>string<span style="color: #339933;color: #CCC;">,&amp;</span><span style="color: #339933;">#038;st);</span>
									getunameandgname<span style="color: #009900;color: #CCC;">&#40;</span>string<span style="color: #339933;color: #CCC;">,</span>st<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
								<span style="color: #009900;color: #CCC;">&#125;</span>
							<span style="color: #009900;color: #CCC;">&#125;</span>
							<span style="color: #b1b100;color: #B83A24;">else</span>  <span style="color: #009900;color: #CCC;">&#123;</span>done<span style="color: #339933;color: #CCC;">=</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
						<span style="color: #009900;color: #CCC;">&#125;</span>
						closedir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
						exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
					<span style="color: #009900;color: #CCC;">&#125;</span>
				<span style="color: #009900;color: #CCC;">&#125;</span>
				<span style="color: #b1b100;color: #B83A24;">else</span><span style="color: #009900;color: #CCC;">&#123;</span>
					<span style="color: #993333;color: #B83A24;">char</span> <span style="color: #339933;color: #CCC;">*</span> string <span style="color: #339933;color: #CCC;">=</span> argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">2</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">;</span>
					i <span style="color: #339933;color: #CCC;">=</span> atoi<span style="color: #009900;color: #CCC;">&#40;</span>string<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
					<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>i<span style="color: #339933;color: #CCC;">&gt;</span><span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
						<span style="color: #993333;color: #B83A24;">char</span> dir<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1024</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span> <span style="color: #339933;color: #CCC;">*</span>s<span style="color: #339933;color: #CCC;">;</span>
						s <span style="color: #339933;color: #CCC;">=</span> getwd <span style="color: #009900;color: #CCC;">&#40;</span>dir<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
						directory<span style="color: #339933;color: #CCC;">=</span>opendir<span style="color: #009900;color: #CCC;">&#40;</span>s<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
						sub<span style="color: #009900;color: #CCC;">&#40;</span>s<span style="color: #339933;color: #CCC;">,</span>i<span style="color: #339933;color: #CCC;">,</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
						exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
					<span style="color: #009900;color: #CCC;">&#125;</span>
					<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #009900;color: #CCC;">&#123;</span><span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;%s does not exist or you specify wrong level<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">2</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>	exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
				<span style="color: #009900;color: #CCC;">&#125;</span>
			<span style="color: #009900;color: #CCC;">&#125;</span>
			<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>argc <span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">2</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
				<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;f&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span><span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;You need to specify atleast what are you looking for!<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
				<span style="color: #993333;color: #B83A24;">char</span> dir<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1024</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span> <span style="color: #339933;color: #CCC;">*</span>s<span style="color: #339933;color: #CCC;">;</span>
				s <span style="color: #339933;color: #CCC;">=</span> getwd <span style="color: #009900;color: #CCC;">&#40;</span>dir<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
				directory<span style="color: #339933;color: #CCC;">=</span>opendir<span style="color: #009900;color: #CCC;">&#40;</span>s<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
				<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>directory <span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
					<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;i&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
						<span style="color: #b1b100;color: #B83A24;">while</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>done<span style="color: #009900;color: #CCC;">&#41;</span>
						<span style="color: #009900;color: #CCC;">&#123;</span>
							entry<span style="color: #339933;color: #CCC;">=</span>readdir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
							<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>entry <span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
								<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#40;</span>strncmp<span style="color: #009900;color: #CCC;">&#40;</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #339933;color: #CCC;">,</span> <span style="color: #ff0000;color: #666666;">&quot;.&quot;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
									stat<span style="color: #009900;color: #CCC;">&#40;</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #339933;color: #CCC;">,&amp;</span><span style="color: #339933;">#038;st);</span>
									getinode<span style="color: #009900;color: #CCC;">&#40;</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #339933;color: #CCC;">,</span>st<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
								<span style="color: #009900;color: #CCC;">&#125;</span>
							<span style="color: #009900;color: #CCC;">&#125;</span>
							<span style="color: #b1b100;color: #B83A24;">else</span>  <span style="color: #009900;color: #CCC;">&#123;</span>done<span style="color: #339933;color: #CCC;">=</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
						<span style="color: #009900;color: #CCC;">&#125;</span>
						closedir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
						exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
					<span style="color: #009900;color: #CCC;">&#125;</span>
					<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;h&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
						<span style="color: #b1b100;color: #B83A24;">while</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>done<span style="color: #009900;color: #CCC;">&#41;</span>
						<span style="color: #009900;color: #CCC;">&#123;</span>
							entry<span style="color: #339933;color: #CCC;">=</span>readdir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
							<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>entry <span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span>    gethidden<span style="color: #009900;color: #CCC;">&#40;</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
							<span style="color: #b1b100;color: #B83A24;">else</span>  <span style="color: #009900;color: #CCC;">&#123;</span>done<span style="color: #339933;color: #CCC;">=</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
						<span style="color: #009900;color: #CCC;">&#125;</span>
						closedir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
						exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
					<span style="color: #009900;color: #CCC;">&#125;</span>
					<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;t&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
						<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;Total size kb:%-10i<span style="color: #000099; font-weight: bold;">\t</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>getdirSize<span style="color: #009900;color: #CCC;">&#40;</span>s<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
						countfiles <span style="color: #339933;color: #CCC;">=</span> countfiles <span style="color: #339933;color: #CCC;">+</span> a<span style="color: #339933;color: #CCC;">;</span>
						<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;Number of the files and folders:%-10i<span style="color: #000099; font-weight: bold;">\t</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>countfiles<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
						exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
					<span style="color: #009900;color: #CCC;">&#125;</span>
					<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;n&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
						<span style="color: #b1b100;color: #B83A24;">while</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>done<span style="color: #009900;color: #CCC;">&#41;</span>
						<span style="color: #009900;color: #CCC;">&#123;</span>
							entry<span style="color: #339933;color: #CCC;">=</span>readdir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
							<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>entry <span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span>
								<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#40;</span>strncmp<span style="color: #009900;color: #CCC;">&#40;</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #339933;color: #CCC;">,</span> <span style="color: #ff0000;color: #666666;">&quot;.&quot;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
									stat<span style="color: #009900;color: #CCC;">&#40;</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #339933;color: #CCC;">,&amp;</span><span style="color: #339933;">#038;st);</span>
									getpermofcu<span style="color: #009900;color: #CCC;">&#40;</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #339933;color: #CCC;">,</span>st<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
								<span style="color: #009900;color: #CCC;">&#125;</span>
							<span style="color: #009900;color: #CCC;">&#125;</span>
							<span style="color: #b1b100;color: #B83A24;">else</span>  <span style="color: #009900;color: #CCC;">&#123;</span>done<span style="color: #339933;color: #CCC;">=</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
						<span style="color: #009900;color: #CCC;">&#125;</span>
						closedir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
						exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
					<span style="color: #009900;color: #CCC;">&#125;</span>
					<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;s&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
						<span style="color: #b1b100;color: #B83A24;">while</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>done<span style="color: #009900;color: #CCC;">&#41;</span>
						<span style="color: #009900;color: #CCC;">&#123;</span>
							entry<span style="color: #339933;color: #CCC;">=</span>readdir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
&nbsp;
							<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>entry <span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span>
								<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#40;</span>strncmp<span style="color: #009900;color: #CCC;">&#40;</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #339933;color: #CCC;">,</span> <span style="color: #ff0000;color: #666666;">&quot;.&quot;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
									stat<span style="color: #009900;color: #CCC;">&#40;</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #339933;color: #CCC;">,&amp;</span><span style="color: #339933;">#038;st);</span>
									getperm<span style="color: #009900;color: #CCC;">&#40;</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #339933;color: #CCC;">,</span>st<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
									<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
								<span style="color: #009900;color: #CCC;">&#125;</span>
							<span style="color: #009900;color: #CCC;">&#125;</span>
							<span style="color: #b1b100;color: #B83A24;">else</span>  <span style="color: #009900;color: #CCC;">&#123;</span>done<span style="color: #339933;color: #CCC;">=</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
						<span style="color: #009900;color: #CCC;">&#125;</span>
						closedir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
						exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
					<span style="color: #009900;color: #CCC;">&#125;</span>
					<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;o&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
						<span style="color: #b1b100;color: #B83A24;">while</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>done<span style="color: #009900;color: #CCC;">&#41;</span>
						<span style="color: #009900;color: #CCC;">&#123;</span>
							entry<span style="color: #339933;color: #CCC;">=</span>readdir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
							<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>entry <span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #009900;color: #CCC;">&#123;</span>
								<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#40;</span>strncmp<span style="color: #009900;color: #CCC;">&#40;</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #339933;color: #CCC;">,</span> <span style="color: #ff0000;color: #666666;">&quot;.&quot;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
									stat<span style="color: #009900;color: #CCC;">&#40;</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #339933;color: #CCC;">,&amp;</span><span style="color: #339933;">#038;st);</span>
									getunameandgname<span style="color: #009900;color: #CCC;">&#40;</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #339933;color: #CCC;">,</span>st<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
								<span style="color: #009900;color: #CCC;">&#125;</span>
							<span style="color: #009900;color: #CCC;">&#125;</span>
							<span style="color: #b1b100;color: #B83A24;">else</span>  <span style="color: #009900;color: #CCC;">&#123;</span>done<span style="color: #339933;color: #CCC;">=</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
						<span style="color: #009900;color: #CCC;">&#125;</span>
						closedir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
						exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
					<span style="color: #009900;color: #CCC;">&#125;</span>
				<span style="color: #009900;color: #CCC;">&#125;</span>
			<span style="color: #009900;color: #CCC;">&#125;</span>
			<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #009900;color: #CCC;">&#123;</span><span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;The syntax is: explore [switches] [pathname] [level]<span style="color: #000099; font-weight: bold;">\n</span>Type: explore --help<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
		<span style="color: #009900;color: #CCC;">&#125;</span>
		<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>argc <span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">2</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
			<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>strcmp <span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;--help&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">0</span> <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
				<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>SYNOPSIS <span style="color: #000099; font-weight: bold;">\n</span>explore [ -hionstbf ] [ pathname ] [ level ]<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>OPTIONS: <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
				<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;	-i, --Inode<span style="color: #000099; font-weight: bold;">\n</span>	Display the name and the inode of a file or directory<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
				<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;	h, --Hidden files<span style="color: #000099; font-weight: bold;">\n</span>	Display the hidden files also of a file or directory (on any given level)<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
				<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;	o, --User and Group<span style="color: #000099; font-weight: bold;">\n</span>	Display the user and the group members of file or directory (on any given level)<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
				<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;	n, --Current user permissions<span style="color: #000099; font-weight: bold;">\n</span>	Display the permissions of the current user for a file or directory (on any given level)<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
				<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;	t, --Total size and items<span style="color: #000099; font-weight: bold;">\n</span>	Display the tolal size and the number of items of a file or directory (on any given level)<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
				<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;	s, --Access permissions<span style="color: #000099; font-weight: bold;">\n</span>	Display the access permissions of a file or directory (on any given level)<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
				<span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;	f, --Find file or directory<span style="color: #000099; font-weight: bold;">\n</span>	Find file or directory anywhere or on a specific pathname <span style="color: #000099; font-weight: bold;">\n</span>	explore [ f ] filename [ pathname ]<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
				exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
			<span style="color: #009900;color: #CCC;">&#125;</span>
			<span style="color: #993333;color: #B83A24;">char</span> <span style="color: #339933;color: #CCC;">*</span> string <span style="color: #339933;color: #CCC;">=</span> argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">;</span>
			i <span style="color: #339933;color: #CCC;">=</span> atoi<span style="color: #009900;color: #CCC;">&#40;</span>string<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
			<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>i<span style="color: #339933;color: #CCC;">&gt;</span><span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
				<span style="color: #993333;color: #B83A24;">char</span> dir<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1024</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span> <span style="color: #339933;color: #CCC;">*</span>s<span style="color: #339933;color: #CCC;">;</span>
				s <span style="color: #339933;color: #CCC;">=</span> getwd <span style="color: #009900;color: #CCC;">&#40;</span>dir<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
				directory<span style="color: #339933;color: #CCC;">=</span>opendir<span style="color: #009900;color: #CCC;">&#40;</span>s<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
				sub<span style="color: #009900;color: #CCC;">&#40;</span>s<span style="color: #339933;color: #CCC;">,</span>i<span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
				exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
			<span style="color: #009900;color: #CCC;">&#125;</span>
			directory<span style="color: #339933;color: #CCC;">=</span>opendir<span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
			status <span style="color: #339933;color: #CCC;">=</span> stat<span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,&amp;</span><span style="color: #339933;">#038;st);</span>
			<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>status <span style="color: #339933;color: #CCC;">==</span> <span style="color: #339933;color: #CCC;">-</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span><span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;%s does not exist<span style="color: #000099; font-weight: bold;">\n</span>Type: explore --help<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;color: #CCC;">,</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span> exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">2</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
			<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>S_ISDIR<span style="color: #009900;color: #CCC;">&#40;</span>st.<span style="color: #202020;">st_mode</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
				directory<span style="color: #339933;color: #CCC;">=</span>opendir<span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
				<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>directory <span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
					<span style="color: #b1b100;color: #B83A24;">while</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>done<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
						entry<span style="color: #339933;color: #CCC;">=</span>readdir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
						<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>entry <span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
							<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#40;</span>strncmp<span style="color: #009900;color: #CCC;">&#40;</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #339933;color: #CCC;">,</span> <span style="color: #ff0000;color: #666666;">&quot;.&quot;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
								<span style="color: #993333;color: #B83A24;">char</span> string<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">50</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">;</span>
								sprintf<span style="color: #009900;color: #CCC;">&#40;</span>string<span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;%s/%s&quot;</span><span style="color: #339933;color: #CCC;">,</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
								returnDetails<span style="color: #009900;color: #CCC;">&#40;</span>string<span style="color: #339933;color: #CCC;">,</span>st<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
							<span style="color: #009900;color: #CCC;">&#125;</span>
						<span style="color: #009900;color: #CCC;">&#125;</span>
						<span style="color: #b1b100;color: #B83A24;">else</span><span style="color: #009900;color: #CCC;">&#123;</span>done<span style="color: #339933;color: #CCC;">=</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
						b<span style="color: #339933;color: #CCC;">=</span><span style="color: #0000dd;color: #DDD;">0</span><span style="color: #339933;color: #CCC;">;</span>
					<span style="color: #009900;color: #CCC;">&#125;</span>
					closedir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
					exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
				<span style="color: #009900;color: #CCC;">&#125;</span>
			<span style="color: #009900;color: #CCC;">&#125;</span>
			<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #009900;color: #CCC;">&#123;</span>	returnDetails<span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span>st<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>	<span style="color: #009900;color: #CCC;">&#125;</span>
		<span style="color: #009900;color: #CCC;">&#125;</span>
		<span style="color: #b1b100;color: #B83A24;">else</span> <span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>argc <span style="color: #339933;color: #CCC;">==</span> <span style="color: #0000dd;color: #DDD;">3</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
			stat<span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,&amp;</span><span style="color: #339933;">#038;st);</span>
			<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>S_ISDIR<span style="color: #009900;color: #CCC;">&#40;</span>st.<span style="color: #202020;">st_mode</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
				<span style="color: #993333;color: #B83A24;">char</span> <span style="color: #339933;color: #CCC;">*</span> string <span style="color: #339933;color: #CCC;">=</span> argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">2</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">;</span>
				i <span style="color: #339933;color: #CCC;">=</span> atoi<span style="color: #009900;color: #CCC;">&#40;</span>string<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
				<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>i<span style="color: #339933;color: #CCC;">&gt;</span><span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>sub<span style="color: #009900;color: #CCC;">&#40;</span>argv<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#93;</span><span style="color: #339933;color: #CCC;">,</span>i<span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
				<span style="color: #b1b100;color: #B83A24;">else</span><span style="color: #009900;color: #CCC;">&#123;</span><span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;You need to specify a proper level e.g. 1<span style="color: #000099; font-weight: bold;">\n</span>The syntax is: explore [-switches] [-pathname] [ level ]<span style="color: #000099; font-weight: bold;">\n</span>Type: explore --help<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
				exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
			<span style="color: #009900;color: #CCC;">&#125;</span>
			<span style="color: #b1b100;color: #B83A24;">else</span><span style="color: #009900;color: #CCC;">&#123;</span><span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;The syntax is: explore [switches] [pathname] [level]<span style="color: #000099; font-weight: bold;">\n</span>Type: explore --help<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
		<span style="color: #009900;color: #CCC;">&#125;</span>
		<span style="color: #b1b100;color: #B83A24;">else</span><span style="color: #009900;color: #CCC;">&#123;</span><span style="color: #000066;color: #8FB394;">printf</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;The syntax is: explore [switches] [pathname] [level]<span style="color: #000099; font-weight: bold;">\n</span>Type: explore --help<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span><span style="color: #009900;color: #CCC;">&#125;</span>
	<span style="color: #009900;color: #CCC;">&#125;</span>
	<span style="color: #b1b100;color: #B83A24;">else</span><span style="color: #009900;color: #CCC;">&#123;</span>
		s <span style="color: #339933;color: #CCC;">=</span> getwd <span style="color: #009900;color: #CCC;">&#40;</span>dir<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
		directory<span style="color: #339933;color: #CCC;">=</span>opendir<span style="color: #009900;color: #CCC;">&#40;</span>s<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
		<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>directory <span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
			<span style="color: #b1b100;color: #B83A24;">while</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #339933;color: #CCC;">!</span>done<span style="color: #009900;color: #CCC;">&#41;</span>
			<span style="color: #009900;color: #CCC;">&#123;</span>
				entry<span style="color: #339933;color: #CCC;">=</span>readdir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
				<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span>entry <span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
					<span style="color: #b1b100;color: #B83A24;">if</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#40;</span>strncmp<span style="color: #009900;color: #CCC;">&#40;</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #339933;color: #CCC;">,</span> <span style="color: #ff0000;color: #666666;">&quot;.&quot;</span><span style="color: #339933;color: #CCC;">,</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span> <span style="color: #339933;color: #CCC;">!=</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #009900;color: #CCC;">&#123;</span>
						sprintf<span style="color: #009900;color: #CCC;">&#40;</span>string<span style="color: #339933;color: #CCC;">,</span><span style="color: #ff0000;color: #666666;">&quot;%s/%s&quot;</span><span style="color: #339933;color: #CCC;">,</span>s<span style="color: #339933;color: #CCC;">,</span>entry<span style="color: #339933;color: #CCC;">-&gt;</span>d_name<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
						stat<span style="color: #009900;color: #CCC;">&#40;</span>string<span style="color: #339933;color: #CCC;">,&amp;</span><span style="color: #339933;">#038;st);</span>
						returnDetails<span style="color: #009900;color: #CCC;">&#40;</span>string<span style="color: #339933;color: #CCC;">,</span>st<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
					<span style="color: #009900;color: #CCC;">&#125;</span>
				<span style="color: #009900;color: #CCC;">&#125;</span>
				<span style="color: #b1b100;color: #B83A24;">else</span><span style="color: #009900;color: #CCC;">&#123;</span>	done<span style="color: #339933;color: #CCC;">=</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #339933;color: #CCC;">;</span>		<span style="color: #009900;color: #CCC;">&#125;</span>
				b<span style="color: #339933;color: #CCC;">=</span><span style="color: #0000dd;color: #DDD;">0</span><span style="color: #339933;color: #CCC;">;</span>
			<span style="color: #009900;color: #CCC;">&#125;</span>
		<span style="color: #009900;color: #CCC;">&#125;</span>
		closedir<span style="color: #009900;color: #CCC;">&#40;</span>directory<span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
		exit<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #0000dd;color: #DDD;">1</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
	<span style="color: #009900;color: #CCC;">&#125;</span>
	<span style="color: #b1b100;color: #B83A24;">return</span> <span style="color: #0000dd;color: #DDD;">0</span><span style="color: #339933;color: #CCC;">;</span>
<span style="color: #009900;color: #CCC;">&#125;</span></pre></div></div>


]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/good-old-times/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stacks and Queues</title>
		<link>http://chamelo.co.uk/stacks-and-queues</link>
		<comments>http://chamelo.co.uk/stacks-and-queues#comments</comments>
		<pubDate>Thu, 12 May 2011 13:47:50 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[NSMutableArray]]></category>
		<category><![CDATA[Queue]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[Stack]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=440</guid>
		<description><![CDATA[I usually find these two simple data structures (Stack and Queues) more than useful&#8230; So using a NSMutableArray we can code their behaviour quite easily. So here you go: The Queue @interface NSMutableArray &#40;CPQueue&#41; - &#40;void&#41;add:&#40;id&#41;object; - &#40;id&#41;remove; - &#40;id&#41;first; - &#40;id&#41;last; @end &#160; @implementation NSMutableArray &#40;CPQueue&#41; - &#40;void&#41;add:&#40;id&#41;object&#123; if&#40;object&#41; &#91;self addObject:object&#93;; &#125; &#160; - [...]]]></description>
			<content:encoded><![CDATA[
<p>I usually find these two simple data structures (Stack and Queues) more than useful&#8230; So using a NSMutableArray we can code their behaviour quite easily.</p>
<p>So here you go:</p>
<p>The Queue</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #a61390;color: #B83A24;">@interface</span> <span style="color: #400080;">NSMutableArray</span> <span style="color: #002200;color: #CCC;">&#40;</span>CPQueue<span style="color: #002200;color: #CCC;">&#41;</span>
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">void</span><span style="color: #002200;color: #CCC;">&#41;</span>add<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span><span style="color: #002200;color: #CCC;">&#41;</span>object;
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span><span style="color: #002200;color: #CCC;">&#41;</span><span style="color: #a61390;color: #8FB394;">remove</span>;
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span><span style="color: #002200;color: #CCC;">&#41;</span>first;
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span><span style="color: #002200;color: #CCC;">&#41;</span>last;
<span style="color: #a61390;color: #B83A24;">@end</span>
&nbsp;
<span style="color: #a61390;color: #B83A24;">@implementation</span> <span style="color: #400080;">NSMutableArray</span> <span style="color: #002200;color: #CCC;">&#40;</span>CPQueue<span style="color: #002200;color: #CCC;">&#41;</span>
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">void</span><span style="color: #002200;color: #CCC;">&#41;</span>add<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span><span style="color: #002200;color: #CCC;">&#41;</span>object<span style="color: #002200;color: #CCC;">&#123;</span>
    <span style="color: #a61390;color: #B83A24;">if</span><span style="color: #002200;color: #CCC;">&#40;</span>object<span style="color: #002200;color: #CCC;">&#41;</span> <span style="color: #002200;color: #CCC;">&#91;</span>self addObject<span style="color: #002200;color: #CCC;">:</span>object<span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #002200;color: #CCC;">&#125;</span>
&nbsp;
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span><span style="color: #002200;color: #CCC;">&#41;</span><span style="color: #a61390;color: #8FB394;">remove</span><span style="color: #002200;color: #CCC;">&#123;</span>
    <span style="color: #a61390;color: #B83A24;">id</span> theResult <span style="color: #002200;color: #CCC;">=</span> <span style="color: #a61390;color: #577A61;">nil</span>;
    <span style="color: #a61390;color: #B83A24;">if</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #002200;color: #CCC;">&#91;</span>self count<span style="color: #002200;color: #CCC;">&#93;</span><span style="color: #002200;color: #CCC;">&#41;</span><span style="color: #002200;color: #CCC;">&#123;</span>
        theResult <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span>self objectAtIndex<span style="color: #002200;color: #CCC;">:</span><span style="color: #2400d9;color: #DDD;">0</span><span style="color: #002200;color: #CCC;">&#93;</span> retain<span style="color: #002200;color: #CCC;">&#93;</span> autorelease<span style="color: #002200;color: #CCC;">&#93;</span>;
        <span style="color: #002200;color: #CCC;">&#91;</span>self removeObjectAtIndex<span style="color: #002200;color: #CCC;">:</span><span style="color: #2400d9;color: #DDD;">0</span><span style="color: #002200;color: #CCC;">&#93;</span>;
    <span style="color: #002200;color: #CCC;">&#125;</span>
    <span style="color: #a61390;color: #B83A24;">return</span> theResult;
<span style="color: #002200;color: #CCC;">&#125;</span>
&nbsp;
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span><span style="color: #002200;color: #CCC;">&#41;</span>first<span style="color: #002200;color: #CCC;">&#123;</span>
    <span style="color: #a61390;color: #B83A24;">return</span> <span style="color: #002200;color: #CCC;">&#91;</span>self objectAtIndex<span style="color: #002200;color: #CCC;">:</span><span style="color: #2400d9;color: #DDD;">0</span><span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #002200;color: #CCC;">&#125;</span>
&nbsp;
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span><span style="color: #002200;color: #CCC;">&#41;</span>last<span style="color: #002200;color: #CCC;">&#123;</span>
    <span style="color: #a61390;color: #B83A24;">return</span> <span style="color: #002200;color: #CCC;">&#91;</span>self lastObject<span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #002200;color: #CCC;">&#125;</span>
<span style="color: #a61390;color: #B83A24;">@end</span></pre></div></div>

<p>The Stack</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #a61390;color: #B83A24;">@interface</span> <span style="color: #400080;">NSMutableArray</span> <span style="color: #002200;color: #CCC;">&#40;</span>CPStack<span style="color: #002200;color: #CCC;">&#41;</span>
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">void</span><span style="color: #002200;color: #CCC;">&#41;</span>push<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span><span style="color: #002200;color: #CCC;">&#41;</span>object;
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span><span style="color: #002200;color: #CCC;">&#41;</span>pop;
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span><span style="color: #002200;color: #CCC;">&#41;</span>top;
<span style="color: #a61390;color: #B83A24;">@end</span>
&nbsp;
<span style="color: #a61390;color: #B83A24;">@implementation</span> <span style="color: #400080;">NSMutableArray</span> <span style="color: #002200;color: #CCC;">&#40;</span>CPStack<span style="color: #002200;color: #CCC;">&#41;</span>
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">void</span><span style="color: #002200;color: #CCC;">&#41;</span>push<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span><span style="color: #002200;color: #CCC;">&#41;</span>object<span style="color: #002200;color: #CCC;">&#123;</span>
    <span style="color: #a61390;color: #B83A24;">if</span><span style="color: #002200;color: #CCC;">&#40;</span>object<span style="color: #002200;color: #CCC;">&#41;</span> <span style="color: #002200;color: #CCC;">&#91;</span>self addObject<span style="color: #002200;color: #CCC;">:</span>object<span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #002200;color: #CCC;">&#125;</span>
&nbsp;
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span><span style="color: #002200;color: #CCC;">&#41;</span>pop
<span style="color: #002200;color: #CCC;">&#123;</span>
    <span style="color: #a61390;color: #B83A24;">id</span> theResult <span style="color: #002200;color: #CCC;">=</span> <span style="color: #a61390;color: #577A61;">nil</span>;
    <span style="color: #a61390;color: #B83A24;">if</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #002200;color: #CCC;">&#91;</span>self count<span style="color: #002200;color: #CCC;">&#93;</span><span style="color: #002200;color: #CCC;">&#41;</span>
    <span style="color: #002200;color: #CCC;">&#123;</span>
        theResult <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span>self lastObject<span style="color: #002200;color: #CCC;">&#93;</span> retain<span style="color: #002200;color: #CCC;">&#93;</span> autorelease<span style="color: #002200;color: #CCC;">&#93;</span>;
        <span style="color: #002200;color: #CCC;">&#91;</span>self removeLastObject<span style="color: #002200;color: #CCC;">&#93;</span>;
    <span style="color: #002200;color: #CCC;">&#125;</span>
    <span style="color: #a61390;color: #B83A24;">return</span> theResult;
<span style="color: #002200;color: #CCC;">&#125;</span>
&nbsp;
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span><span style="color: #002200;color: #CCC;">&#41;</span>top
<span style="color: #002200;color: #CCC;">&#123;</span>
    <span style="color: #a61390;color: #B83A24;">return</span> <span style="color: #002200;color: #CCC;">&#91;</span>self lastObject<span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #002200;color: #CCC;">&#125;</span>
<span style="color: #a61390;color: #B83A24;">@end</span></pre></div></div>


]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/stacks-and-queues/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple Rotation</title>
		<link>http://chamelo.co.uk/simple-rotation</link>
		<comments>http://chamelo.co.uk/simple-rotation#comments</comments>
		<pubDate>Sat, 16 Apr 2011 00:27:35 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Animation]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[NSAnimationContext]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=427</guid>
		<description><![CDATA[This was my first rotation animation few year before with iDMG (my first Cocoa application) it is very simple but is my favourite. Of course this rotation is hardly used since there is no way to define the anchor point like core animation. Here is the code: &#91;NSAnimationContext beginGrouping&#93;; &#91;&#91;NSAnimationContext currentContext&#93; setDuration:1.0f&#93;; &#91;&#91;arrow animator&#93; setFrameRotation:90&#93;; [...]]]></description>
			<content:encoded><![CDATA[
<p>This was my first rotation animation few year before with iDMG (my first Cocoa application) it is very simple but is my favourite. Of course this rotation is hardly used since there is no way to define the anchor point like core animation.<br />
<center><br />
<a href="http://chamelo.co.uk/wp-content/uploads/2011/04/idmgarrow1.jpg"><img src="http://chamelo.co.uk/wp-content/uploads/2011/04/idmgarrow1.jpg" alt="" title="idmgarrow1" width="404" height="182" class="aligncenter size-full wp-image-435" /></a><br />
</center></p>
<p>Here is the code:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #400080;">NSAnimationContext</span> beginGrouping<span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #400080;">NSAnimationContext</span> currentContext<span style="color: #002200;color: #CCC;">&#93;</span> setDuration<span style="color: #002200;color: #CCC;">:</span>1.0f<span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span>arrow animator<span style="color: #002200;color: #CCC;">&#93;</span> setFrameRotation<span style="color: #002200;color: #CCC;">:</span><span style="color: #2400d9;color: #DDD;">90</span><span style="color: #002200;color: #CCC;">&#93;</span>; 
<span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #400080;">NSAnimationContext</span> endGrouping<span style="color: #002200;color: #CCC;">&#93;</span>;</pre></div></div>


]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/simple-rotation/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Checking OS Version</title>
		<link>http://chamelo.co.uk/checking-os-version</link>
		<comments>http://chamelo.co.uk/checking-os-version#comments</comments>
		<pubDate>Sat, 16 Apr 2011 00:14:37 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[CheckOS]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=421</guid>
		<description><![CDATA[Well again, part of DockSpaces requires different code for 10.5 Leopard and different for 10.6 Snow Leopard. The following code can distinguish the operating system and do your work accordingly. SInt32 version = 0; Gestalt&#40; gestaltSystemVersion, &#38;version &#41;; BOOL snowleopard = &#40; version &#62;= 0x1060 &#41;; BOOL leopard = &#40; version &#62;= 0x1050 &#41;; &#160; [...]]]></description>
			<content:encoded><![CDATA[
<p>Well again, part of DockSpaces requires different code for 10.5 Leopard and different for 10.6 Snow Leopard. The following code can distinguish the operating system and do your work accordingly.</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;">SInt32 version <span style="color: #002200;color: #CCC;">=</span> <span style="color: #2400d9;color: #DDD;">0</span>;
Gestalt<span style="color: #002200;color: #CCC;">&#40;</span> gestaltSystemVersion, <span style="color: #002200;color: #CCC;">&amp;</span>version <span style="color: #002200;color: #CCC;">&#41;</span>;
<span style="color: #a61390;color: #B83A24;">BOOL</span> snowleopard <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#40;</span> version &gt;<span style="color: #002200;color: #CCC;">=</span> 0x1060 <span style="color: #002200;color: #CCC;">&#41;</span>; 
<span style="color: #a61390;color: #B83A24;">BOOL</span> leopard <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#40;</span> version &gt;<span style="color: #002200;color: #CCC;">=</span> 0x1050 <span style="color: #002200;color: #CCC;">&#41;</span>; 
&nbsp;
<span style="color: #a61390;color: #B83A24;">if</span> <span style="color: #002200;color: #CCC;">&#40;</span> snowleopard <span style="color: #002200;color: #CCC;">&#41;</span><span style="color: #002200;color: #CCC;">&#123;</span>   
    <span style="color: #11740a; font-style: italic;">// some code</span>
<span style="color: #002200;color: #CCC;">&#125;</span>
<span style="color: #a61390;color: #B83A24;">else</span> <span style="color: #a61390;color: #B83A24;">if</span> <span style="color: #002200;color: #CCC;">&#40;</span> leopard <span style="color: #002200;color: #CCC;">&#41;</span><span style="color: #002200;color: #CCC;">&#123;</span>   
    <span style="color: #11740a; font-style: italic;">// some other code</span>
<span style="color: #002200;color: #CCC;">&#125;</span></pre></div></div>


]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/checking-os-version/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Launching Preferences</title>
		<link>http://chamelo.co.uk/launching-preferences</link>
		<comments>http://chamelo.co.uk/launching-preferences#comments</comments>
		<pubDate>Sat, 16 Apr 2011 00:01:57 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[NSArray]]></category>
		<category><![CDATA[NSWorkspace]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=410</guid>
		<description><![CDATA[Hi, long time no post I been quite bust with university and work therefore not that much effort on the blog. DockSpaces needed a direct call to open the Dock Preferences within System Preferences. So here is something quite simple but in case you need it&#8230; -&#40;IBAction&#41;launchPreferences:&#40;id&#41;sender &#123; NSArray *paths = NSSearchPathForDirectoriesInDomains &#40;NSLibraryDirectory, NSSystemDomainMask, NO&#41;; [...]]]></description>
			<content:encoded><![CDATA[
<p>Hi, long time no post <img src='http://chamelo.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
I been quite bust with university and work therefore not that much effort on the blog.<br />
DockSpaces needed a direct call to open the Dock Preferences within System Preferences.</p>
<p><center><br />
<a href="http://chamelo.co.uk/wp-content/uploads/2011/04/pref.jpg"><img class="size-full wp-image-411 aligncenter" title="pref" src="http://chamelo.co.uk/wp-content/uploads/2011/04/pref.jpg" alt="" width="447" height="280" /></a><br />
</center><br />
So here is something quite simple but in case you need it&#8230;</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #002200;color: #CCC;">-</span><span style="color: #002200;color: #CCC;">&#40;</span>IBAction<span style="color: #002200;color: #CCC;">&#41;</span>launchPreferences<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span><span style="color: #002200;color: #CCC;">&#41;</span>sender
<span style="color: #002200;color: #CCC;">&#123;</span>
 <span style="color: #400080;">NSArray</span> <span style="color: #002200;color: #CCC;">*</span>paths <span style="color: #002200;color: #CCC;">=</span> NSSearchPathForDirectoriesInDomains
 <span style="color: #002200;color: #CCC;">&#40;</span>NSLibraryDirectory, NSSystemDomainMask, <span style="color: #a61390;color: #577A61;">NO</span><span style="color: #002200;color: #CCC;">&#41;</span>;
 <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #400080;">NSWorkspace</span> sharedWorkspace<span style="color: #002200;color: #CCC;">&#93;</span> openFile<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span>paths objectAtIndex<span style="color: #002200;color: #CCC;">:</span><span style="color: #2400d9;color: #DDD;">0</span><span style="color: #002200;color: #CCC;">&#93;</span>
   stringByAppendingPathComponent<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;PreferencePanes/Dock.prefPane&quot;</span><span style="color: #002200;color: #CCC;">&#93;</span><span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #002200;color: #CCC;">&#125;</span></pre></div></div>


]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/launching-preferences/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bandwidth Limiter</title>
		<link>http://chamelo.co.uk/bandwidth-limiter</link>
		<comments>http://chamelo.co.uk/bandwidth-limiter#comments</comments>
		<pubDate>Sat, 04 Dec 2010 18:42:54 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[AuthorizationExecuteWithPrivileges]]></category>
		<category><![CDATA[NSTask]]></category>
		<category><![CDATA[Slider]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=388</guid>
		<description><![CDATA[Hi everyone&#8230; This post it won&#8217;t be very helpful for most of you, but it is extremely useful for me. Currently I live in accommodation flat in London and for some annoying reason every room has a weekly cap of 14Gb&#8230; Therefore, I usually reach the limit quite fast so I had to do something!!! [...]]]></description>
			<content:encoded><![CDATA[
<p>Hi everyone&#8230;</p>
<p style="text-align: left;">This post it won&#8217;t be very helpful for most of you, but it is extremely useful for me. <img src='http://chamelo.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Currently I live in accommodation flat in London and for some annoying reason every room has a weekly cap of 14Gb&#8230; Therefore, I usually reach the limit quite fast so I had to do something!!!</p>
<p style="text-align: center;">
<p style="text-align: center;"><a href="http://chamelo.co.uk/wp-content/uploads/2010/12/Screen-shot-2010-12-04-at-19.07.53.png"><img class="aligncenter size-full wp-image-407" style="border: 2px solid black;" title="Bandwidth Screenshot" src="http://chamelo.co.uk/wp-content/uploads/2010/12/Screen-shot-2010-12-04-at-19.07.53.png" alt="" width="413" height="190" /></a></p>
<p style="text-align: center;">Solution: A Bandwidth limiter that limits my connection to 64kbit/s.</p>
<p style="text-align: left;">
<p style="text-align: left;">Grab the application from <a href="http://chamelo.co.uk/wp-content/uploads/2010/12/BLapp.zip"><strong>here</strong></a> and the source code <strong><a href="http://chamelo.co.uk/wp-content/uploads/2010/12/BWsource.zip">here</a>.</strong></p>
<p style="text-align: center;"><span id="more-388"></span></p>
<p style="text-align: left;">
<p style="text-align: left;">In this project I am also using two interesting parts of code from other developers:</p>
<p style="text-align: left;"><a href="http://michaelobrien.info/blog/2009/07/authorizationexecutewithprivileges-a-simple-example/  " target="_blank"><strong>Authorization example</strong></a> from Michael Obrien.</p>
<p style="text-align: left;">The authorization code is used to authorize the commands. To limit the connection two commands need to be executed; and since this requires <strong>sudo</strong> privileges authorization is required.</p>
<div id="_mcePaste">
<ul>
<li>sudo ipfw pipe 1 config bw 64kbit/s</li>
<li>sudo ipfw add 1 pipe 1 src-port 80;</li>
</ul>
</div>
<p><a href="http://embercode.com/blog/" target="_blank"><strong>Slider button</strong></a> form Embercode.</p>
<p>Thanks for sharing guys <img src='http://chamelo.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/bandwidth-limiter/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Textfield validation</title>
		<link>http://chamelo.co.uk/textfield-validation</link>
		<comments>http://chamelo.co.uk/textfield-validation#comments</comments>
		<pubDate>Fri, 19 Nov 2010 17:53:28 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[NSFormatter]]></category>
		<category><![CDATA[NSTextfield]]></category>
		<category><![CDATA[Source Code]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=362</guid>
		<description><![CDATA[The following example is the simplest way to validate a textfield. In this case we have a textfield and the only characters allowed are: [0123456789QWERTYUIOPLKJHGFDSAZXCVBNMqwertyuioplkjhgfdsazxcvbnm ]; I think in any application with user input you will need some sort of validation You can grab the code TextFormatter]]></description>
			<content:encoded><![CDATA[
<p style="text-align: center;"><a href="http://chamelo.co.uk/wp-content/uploads/2010/11/Screen-shot-2010-11-19-at-17.43.57.png"><br />
<img class="size-full wp-image-363  aligncenter" style="border: 3px solid black;" title="Textfield" src="http://chamelo.co.uk/wp-content/uploads/2010/11/Screen-shot-2010-11-19-at-17.43.57.png" alt="" width="340" height="239" /></a></p>
<p style="text-align: left;">The following example is the simplest way to validate a textfield. In this case we have a textfield and the only characters allowed are:</p>
<p style="text-align: center;">[0123456789QWERTYUIOPLKJHGFDSAZXCVBNMqwertyuioplkjhgfdsazxcvbnm ];</p>
<p>I think in any application with user input you will need some sort of validation <img src='http://chamelo.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>You can grab the code <a href="http://chamelo.co.uk/wp-content/uploads/2010/11/TextFormatter.zip">TextFormatter</a></p>

]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/textfield-validation/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Infix to Postfix in Cocoa</title>
		<link>http://chamelo.co.uk/infix-to-postfix-in-cocoa</link>
		<comments>http://chamelo.co.uk/infix-to-postfix-in-cocoa#comments</comments>
		<pubDate>Thu, 18 Nov 2010 17:34:30 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[NSMutableArray]]></category>
		<category><![CDATA[NSMutableString]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[Stack]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=351</guid>
		<description><![CDATA[Hi, recently I have been working on this infix to postfix notation converter in C++ for my data structures module at the university. I also discovered that Objective-C does not have templates like C++ to create an abstract data type. Anyway, the infix to postfix requires the use of a Stack and as you can [...]]]></description>
			<content:encoded><![CDATA[
<p style="text-align: center;"><img class="aligncenter size-full wp-image-353" style="border: 3px solid black;" title="infix to postfix" src="http://chamelo.co.uk/wp-content/uploads/2010/11/Screen-shot-2010-11-18-at-17.15.34.png" alt="" width="369" height="218" /></p>
<p style="text-align: left;">Hi, recently I have been working on this infix to postfix notation converter in C++ for my data structures module at the university. I also discovered that Objective-C does not have <a href="http://www.cplusplus.com/doc/tutorial/templates/" target="_blank"><strong>templates</strong></a> like C++ to create an abstract data type.</p>
<p style="text-align: left;">Anyway, the infix to postfix requires the use of a Stack and as you can see <a href="http://forum.soft32.com/mac/Stack-class-Cocoa-ftopict46638.html" target="_blank"><strong>here</strong></a> there is a way to implement this behaviour using a NSMutableArray.</p>
<p style="text-align: left;">Grab the source code -<strong> <a href="http://chamelo.co.uk/wp-content/uploads/2010/11/InfixToPostfix.zip">InfixToPostfix</a><span style="font-weight: normal;"> &#8211; The </span></strong>code is based on <a href="http://www.java-forums.org/java-lang/7557-how-convert-infix-arithmetic-expressions-postfix.html"><strong>this</strong></a> java implementation.<span id="more-351"></span></p>
<p>The stack implementation is here and you can see how we can extend the functionality of the NSMutableArray:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #6e371a;color: #CDC;">#import &lt;Cocoa/Cocoa.h&gt;</span>
<span style="color: #a61390;color: #B83A24;">@interface</span> <span style="color: #400080;">NSMutableArray</span> <span style="color: #002200;color: #CCC;">&#40;</span>Stack<span style="color: #002200;color: #CCC;">&#41;</span>
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">void</span><span style="color: #002200;color: #CCC;">&#41;</span>push<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span><span style="color: #002200;color: #CCC;">&#41;</span>inObject;
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span><span style="color: #002200;color: #CCC;">&#41;</span>pop;
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span><span style="color: #002200;color: #CCC;">&#41;</span>peek;
<span style="color: #a61390;color: #B83A24;">@end</span> 
&nbsp;
<span style="color: #a61390;color: #B83A24;">@implementation</span> <span style="color: #400080;">NSMutableArray</span> <span style="color: #002200;color: #CCC;">&#40;</span>Stack<span style="color: #002200;color: #CCC;">&#41;</span> 
&nbsp;
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">void</span><span style="color: #002200;color: #CCC;">&#41;</span>push<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span><span style="color: #002200;color: #CCC;">&#41;</span>inObject
<span style="color: #002200;color: #CCC;">&#123;</span>
	<span style="color: #a61390;color: #B83A24;">if</span><span style="color: #002200;color: #CCC;">&#40;</span>inObject<span style="color: #002200;color: #CCC;">&#41;</span> <span style="color: #002200;color: #CCC;">&#91;</span>self addObject<span style="color: #002200;color: #CCC;">:</span>inObject<span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #002200;color: #CCC;">&#125;</span> 
&nbsp;
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">BOOL</span><span style="color: #002200;color: #CCC;">&#41;</span>isEmpty
<span style="color: #002200;color: #CCC;">&#123;</span>
	<span style="color: #a61390;color: #B83A24;">return</span> <span style="color: #002200;color: #CCC;">&#91;</span>self count<span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #002200;color: #CCC;">&#125;</span> 
&nbsp;
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span><span style="color: #002200;color: #CCC;">&#41;</span>pop
<span style="color: #002200;color: #CCC;">&#123;</span>
	<span style="color: #a61390;color: #B83A24;">id</span> theResult <span style="color: #002200;color: #CCC;">=</span> <span style="color: #a61390;color: #577A61;">nil</span>;
	<span style="color: #a61390;color: #B83A24;">if</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #002200;color: #CCC;">&#91;</span>self count<span style="color: #002200;color: #CCC;">&#93;</span><span style="color: #002200;color: #CCC;">&#41;</span>
	<span style="color: #002200;color: #CCC;">&#123;</span>
		theResult <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span>self lastObject<span style="color: #002200;color: #CCC;">&#93;</span> retain<span style="color: #002200;color: #CCC;">&#93;</span> autorelease<span style="color: #002200;color: #CCC;">&#93;</span>;
		<span style="color: #002200;color: #CCC;">&#91;</span>self removeLastObject<span style="color: #002200;color: #CCC;">&#93;</span>;
	<span style="color: #002200;color: #CCC;">&#125;</span>
	<span style="color: #a61390;color: #B83A24;">return</span> theResult;
<span style="color: #002200;color: #CCC;">&#125;</span> 
&nbsp;
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span><span style="color: #002200;color: #CCC;">&#41;</span>peek
<span style="color: #002200;color: #CCC;">&#123;</span>
	<span style="color: #a61390;color: #B83A24;">id</span> theResult <span style="color: #002200;color: #CCC;">=</span> <span style="color: #a61390;color: #577A61;">nil</span>;
	<span style="color: #a61390;color: #B83A24;">if</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #002200;color: #CCC;">&#91;</span>self count<span style="color: #002200;color: #CCC;">&#93;</span><span style="color: #002200;color: #CCC;">&#41;</span>
	<span style="color: #002200;color: #CCC;">&#123;</span>
		theResult <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span>self lastObject<span style="color: #002200;color: #CCC;">&#93;</span> retain<span style="color: #002200;color: #CCC;">&#93;</span> autorelease<span style="color: #002200;color: #CCC;">&#93;</span>;
	<span style="color: #002200;color: #CCC;">&#125;</span>
	<span style="color: #a61390;color: #B83A24;">return</span> theResult;
<span style="color: #002200;color: #CCC;">&#125;</span>
<span style="color: #a61390;color: #B83A24;">@end</span></pre></div></div>


]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/infix-to-postfix-in-cocoa/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Preferences window paradigm</title>
		<link>http://chamelo.co.uk/preferences-window-paradigm</link>
		<comments>http://chamelo.co.uk/preferences-window-paradigm#comments</comments>
		<pubDate>Fri, 11 Jun 2010 04:59:03 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[NSToolbar]]></category>
		<category><![CDATA[NSWindow]]></category>
		<category><![CDATA[NSWindowController]]></category>
		<category><![CDATA[Preferences]]></category>
		<category><![CDATA[Source Code]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=300</guid>
		<description><![CDATA[In this post I will introduce you my preferences window approach For sure is not the only one you will come across, but is definitely one of the easiest ways. In this case the toolbar is created with Interface Builder so is compatible only with 10.5 or later. (less code) So let&#8217;s start&#8230; STEP #1 [...]]]></description>
			<content:encoded><![CDATA[
<p style="text-align: center;"><a href="http://chamelo.co.uk/wp-content/uploads/2010/06/Screen-shot-2010-06-11-at-05.02.21.png"><img class="size-full wp-image-301  aligncenter" title="Preferences" src="http://chamelo.co.uk/wp-content/uploads/2010/06/Screen-shot-2010-06-11-at-05.02.21.png" alt="" width="414" height="285" /></a></p>
<p>In this post I will introduce you my preferences window approach <img src='http://chamelo.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  For sure is not the only one you will come across, but is definitely one of the easiest ways. In this case the toolbar is created with Interface Builder so is compatible only with 10.5 or later. (less code)</p>
<p>So let&#8217;s start&#8230;</p>
<p>STEP #1 Preferences window controller</p>
<p><span id="more-300"></span></p>
<p>We need to create the controller for the window. The controller will have all the outlets for the views and the switchView method that will be used from the toolbar that we will create in Interface Builder.</p>
<p>Here is the header file:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #6e371a;color: #CDC;">#import &lt;Cocoa/Cocoa.h&gt;</span>
<span style="color: #a61390;color: #B83A24;">@interface</span> Preferences <span style="color: #002200;color: #CCC;">:</span> <span style="color: #400080;">NSWindowController</span>  <span style="color: #002200;color: #CCC;">&#123;</span>
	IBOutlet <span style="color: #400080;">NSToolbar</span> <span style="color: #002200;color: #CCC;">*</span>bar;
	IBOutlet <span style="color: #400080;">NSView</span> <span style="color: #002200;color: #CCC;">*</span>generalPreferenceView;
	IBOutlet <span style="color: #400080;">NSView</span> <span style="color: #002200;color: #CCC;">*</span>colorsPreferenceView;
	IBOutlet <span style="color: #400080;">NSView</span> <span style="color: #002200;color: #CCC;">*</span>updatesPreferenceView;
	IBOutlet <span style="color: #400080;">NSView</span> <span style="color: #002200;color: #CCC;">*</span>advancedPreferenceView;
	<span style="color: #a61390;color: #B83A24;">int</span> currentViewTag;
<span style="color: #002200;color: #CCC;">&#125;</span>
&nbsp;
<span style="color: #002200;color: #CCC;">+</span> <span style="color: #002200;color: #CCC;">&#40;</span>Preferences <span style="color: #002200;color: #CCC;">*</span><span style="color: #002200;color: #CCC;">&#41;</span>sharedPrefsWindowController;
<span style="color: #002200;color: #CCC;">+</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #400080;">NSString</span> <span style="color: #002200;color: #CCC;">*</span><span style="color: #002200;color: #CCC;">&#41;</span>nibName;
<span style="color: #002200;color: #CCC;">-</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #400080;">NSView</span> <span style="color: #002200;color: #CCC;">*</span><span style="color: #002200;color: #CCC;">&#41;</span>viewForTag<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">int</span><span style="color: #002200;color: #CCC;">&#41;</span>tag;
<span style="color: #002200;color: #CCC;">-</span><span style="color: #002200;color: #CCC;">&#40;</span>IBAction<span style="color: #002200;color: #CCC;">&#41;</span>switchView<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span><span style="color: #002200;color: #CCC;">&#41;</span>sender;
<span style="color: #002200;color: #CCC;">-</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">NSRect</span><span style="color: #002200;color: #CCC;">&#41;</span>newFrameForNewContentView<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #400080;">NSView</span> <span style="color: #002200;color: #CCC;">*</span><span style="color: #002200;color: #CCC;">&#41;</span>view;
<span style="color: #a61390;color: #B83A24;">@end</span></pre></div></div>

<p>The implementation file is big so have a look <a href="http://cl.ly/b5bdd9974248029d4916" target="_blank"><strong><span style="color: #00ff00;">here</span></strong></a><strong><span style="color: #00ff00;">.</span></strong></p>
<p>STEP #2 Xib</p>
<p>Then the xib file with the required window, views and connections.</p>
<p><a href="http://chamelo.co.uk/wp-content/uploads/2010/06/Screen-shot-2010-06-11-at-05.48.42.png"><img class="aligncenter size-full wp-image-317" title="IB" src="http://chamelo.co.uk/wp-content/uploads/2010/06/Screen-shot-2010-06-11-at-05.48.42.png" alt="" width="519" height="391" /></a></p>
<p><span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 19px; white-space: normal; font-size: 13px;">STEP #3 Delegate class</span></p>
<p>The delegate class is fairly small.</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #6e371a;color: #CDC;">#import &lt;Cocoa/Cocoa.h&gt;</span>
<span style="color: #a61390;color: #B83A24;">@interface</span> CPreferencesAppDelegate <span style="color: #002200;color: #CCC;">:</span> <span style="color: #400080;">NSObject</span>  <span style="color: #002200;color: #CCC;">&#123;</span>
    <span style="color: #400080;">NSWindow</span> <span style="color: #002200;color: #CCC;">*</span>window;
<span style="color: #002200;color: #CCC;">&#125;</span>
<span style="color: #a61390;color: #B83A24;">@property</span> <span style="color: #002200;color: #CCC;">&#40;</span>assign<span style="color: #002200;color: #CCC;">&#41;</span> IBOutlet <span style="color: #400080;">NSWindow</span> <span style="color: #002200;color: #CCC;">*</span>window;
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span>IBAction<span style="color: #002200;color: #CCC;">&#41;</span>openPreferences<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span><span style="color: #002200;color: #CCC;">&#41;</span>sender;
<span style="color: #a61390;color: #B83A24;">@end</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #6e371a;color: #CDC;">#import &quot;CPreferencesAppDelegate.h&quot;</span>
<span style="color: #6e371a;color: #CDC;">#import &quot;Preferences.h&quot;</span>
&nbsp;
<span style="color: #a61390;color: #B83A24;">@implementation</span> CPreferencesAppDelegate
<span style="color: #a61390;color: #B83A24;">@synthesize</span> window;
&nbsp;
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">void</span><span style="color: #002200;color: #CCC;">&#41;</span>applicationDidFinishLaunching<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #400080;">NSNotification</span> <span style="color: #002200;color: #CCC;">*</span><span style="color: #002200;color: #CCC;">&#41;</span>aNotification <span style="color: #002200;color: #CCC;">&#123;</span>
	<span style="color: #002200;color: #CCC;">&#91;</span>self openPreferences<span style="color: #002200;color: #CCC;">:</span><span style="color: #a61390;color: #577A61;">nil</span><span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #002200;color: #CCC;">&#125;</span>
&nbsp;
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span>IBAction<span style="color: #002200;color: #CCC;">&#41;</span>openPreferences<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span><span style="color: #002200;color: #CCC;">&#41;</span>sender<span style="color: #002200;color: #CCC;">&#123;</span>
	<span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span>Preferences sharedPrefsWindowController<span style="color: #002200;color: #CCC;">&#93;</span> showWindow<span style="color: #002200;color: #CCC;">:</span><span style="color: #a61390;color: #577A61;">nil</span><span style="color: #002200;color: #CCC;">&#93;</span>;
	<span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">void</span><span style="color: #002200;color: #CCC;">&#41;</span>sender;
<span style="color: #002200;color: #CCC;">&#125;</span>
<span style="color: #a61390;color: #B83A24;">@end</span></pre></div></div>

<p>STEP #4 Grab the source code - <a href="http://chamelo.co.uk/wp-content/uploads/2010/06/CPreferences.zip"><span style="color: #00ff00;"><strong>CPreferences</strong></span></a></p>

]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/preferences-window-paradigm/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Reopen main window from Dock Icon</title>
		<link>http://chamelo.co.uk/reopen-main-window-from-dock-icon</link>
		<comments>http://chamelo.co.uk/reopen-main-window-from-dock-icon#comments</comments>
		<pubDate>Wed, 09 Jun 2010 01:45:47 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[NSApplication]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=277</guid>
		<description><![CDATA[If you close a window in a Cocoa app there are several ways to bring the window up again and that depends on the developer. Anyway, the most common is to click on the Dock icon. In order to do that the method is the following: - &#40;BOOL&#41;applicationShouldHandleReopen:&#40;NSApplication*&#41;theApplication hasVisibleWindows:&#40;BOOL&#41;flag&#123; &#91;mainWindow orderFront:nil&#93;; return TRUE; &#125; Of-course [...]]]></description>
			<content:encoded><![CDATA[
<p>If you close a window in a Cocoa app there are several ways to bring the window up again and that depends on the developer. Anyway, the most common is to click on the Dock icon.</p>
<p>In order to do that the method is the following:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">BOOL</span><span style="color: #002200;color: #CCC;">&#41;</span>applicationShouldHandleReopen<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #400080;">NSApplication</span><span style="color: #002200;color: #CCC;">*</span><span style="color: #002200;color: #CCC;">&#41;</span>theApplication
                                     hasVisibleWindows<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">BOOL</span><span style="color: #002200;color: #CCC;">&#41;</span>flag<span style="color: #002200;color: #CCC;">&#123;</span>
             <span style="color: #002200;color: #CCC;">&#91;</span>mainWindow orderFront<span style="color: #002200;color: #CCC;">:</span><span style="color: #a61390;color: #577A61;">nil</span><span style="color: #002200;color: #CCC;">&#93;</span>;
             <span style="color: #a61390;color: #B83A24;">return</span> TRUE;
<span style="color: #002200;color: #CCC;">&#125;</span></pre></div></div>

<p>Of-course this method is called in the Application delegate class. <img src='http://chamelo.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/reopen-main-window-from-dock-icon/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Separate nibs/xibs Part 2</title>
		<link>http://chamelo.co.uk/separate-nibsxibs-part-2</link>
		<comments>http://chamelo.co.uk/separate-nibsxibs-part-2#comments</comments>
		<pubDate>Wed, 09 Jun 2010 01:14:53 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Nibs/Xibs]]></category>
		<category><![CDATA[NSWindowController]]></category>
		<category><![CDATA[Source Code]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=209</guid>
		<description><![CDATA[Following the previous post that I explained you why you are encouraged to separate your nib/xib files now I am going to explain you how to do it. STEP #1 The window controller First we need to create the window controller (NSWindowController)  The header file AboutWindowController.h #import &#60;Cocoa/Cocoa.h&#62; @interface AboutWindowController : NSWindowController &#123; &#125; @end [...]]]></description>
			<content:encoded><![CDATA[
<p>Following the previous <a href="http://chamelo.co.uk/separate-nibsxibs" target="_blank">post</a> that I explained you why you are encouraged to separate your nib/xib files now I am going to explain you how to do it.</p>
<h1 style="text-align: left;">STEP #1 The window controller</h1>
<p style="text-align: left;">First we need to create the window controller (<a href="http://developer.apple.com/mac/library/documentation/cocoa/reference/ApplicationKit/Classes/NSWindowController_Class/Reference/Reference.html">NSWindowController</a>) <img src='http://chamelo.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  The header file AboutWindowController.h</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #6e371a;color: #CDC;">#import &lt;Cocoa/Cocoa.h&gt;</span>
<span style="color: #a61390;color: #B83A24;">@interface</span> AboutWindowController <span style="color: #002200;color: #CCC;">:</span> <span style="color: #400080;">NSWindowController</span> <span style="color: #002200;color: #CCC;">&#123;</span> <span style="color: #002200;color: #CCC;">&#125;</span>
<span style="color: #a61390;color: #B83A24;">@end</span></pre></div></div>

<p>And the implementation file AboutWindowController.m</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #6e371a;color: #CDC;">#import &quot;AboutWindowController.h&quot;</span>
<span style="color: #a61390;color: #B83A24;">@implementation</span> AboutWindowController
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span><span style="color: #002200;color: #CCC;">&#41;</span>init <span style="color: #002200;color: #CCC;">&#123;</span>
	<span style="color: #a61390;color: #B83A24;">if</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #002200;color: #CCC;">&#40;</span>self <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span>super initWithWindow<span style="color: #002200;color: #CCC;">:</span><span style="color: #a61390;color: #577A61;">NULL</span><span style="color: #002200;color: #CCC;">&#93;</span><span style="color: #002200;color: #CCC;">&#41;</span> <span style="color: #002200;color: #CCC;">!=</span> <span style="color: #a61390;color: #577A61;">NULL</span><span style="color: #002200;color: #CCC;">&#41;</span> <span style="color: #002200;color: #CCC;">&#123;</span><span style="color: #002200;color: #CCC;">&#125;</span>
	<span style="color: #a61390;color: #B83A24;">return</span> self;
<span style="color: #002200;color: #CCC;">&#125;</span>
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #400080;">NSString</span> <span style="color: #002200;color: #CCC;">*</span><span style="color: #002200;color: #CCC;">&#41;</span>windowNibName <span style="color: #002200;color: #CCC;">&#123;</span>
	<span style="color: #a61390;color: #B83A24;">return</span> NSStringFromClass<span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #002200;color: #CCC;">&#91;</span>self class<span style="color: #002200;color: #CCC;">&#93;</span><span style="color: #002200;color: #CCC;">&#41;</span>;
<span style="color: #11740a; font-style: italic;">// This determines the name of the Xib file, In this case the name</span>
<span style="color: #11740a; font-style: italic;">// of the class, so we need to create the AboutWindowController.xib</span>
<span style="color: #002200;color: #CCC;">&#125;</span>
<span style="color: #a61390;color: #B83A24;">@end</span></pre></div></div>

<h1>STEP #2 Create the Xib</h1>
<p style="text-align: left;">Now, with Interface Builder we need to add a new Application Xib and name it &#8220;AboutWindowController&#8221;. <a href="http://chamelo.co.uk/wp-content/uploads/2010/06/Screen-shot-2010-06-09-at-01.13.37.png">Step 1</a> <a href="http://chamelo.co.uk/wp-content/uploads/2010/06/Screen-shot-2010-06-09-at-01.14.04.png">Step 2</a></p>
<p style="text-align: left;"><span id="more-209"></span></p>
<h1 style="text-align: left;">STEP #3 Edit the Xib</h1>
<p style="text-align: left;">Once we open the new xib file with interface builder we need to remove the mainmenu (NSMenu), change the type of the &#8220;File&#8217;s Owner&#8221; from &#8220;NSApplication&#8221; to &#8220;AboutWindowController&#8221; and connect the window attribute with the window in the xib.</p>
<p style="text-align: center;"><a href="http://chamelo.co.uk/wp-content/uploads/2010/06/Screen-shot-2010-06-09-at-01.08.22.png"><img class="size-full wp-image-212  aligncenter" title="AboutWindowController" src="http://chamelo.co.uk/wp-content/uploads/2010/06/Screen-shot-2010-06-09-at-01.08.22.png" alt="" width="444" height="363" /></a></p>
<p>Once we finish you will have a controller for your AboutWindowController.xib file.</p>
<h1 style="text-align: left;">STEP #4 Create the delegate class</h1>
<p>Our app delegate class header file &#8211; AboutAppDelegate.h</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #6e371a;color: #CDC;">#import &lt;Cocoa/Cocoa.h&gt;</span>
<span style="color: #6e371a;color: #CDC;">#import &quot;AboutWindowController.h&quot;</span>
&nbsp;
<span style="color: #a61390;color: #B83A24;">@interface</span> AboutAppDelegate <span style="color: #002200;color: #CCC;">:</span> <span style="color: #400080;">NSObject</span>  <span style="color: #002200;color: #CCC;">&#123;</span>
    <span style="color: #400080;">NSWindow</span> <span style="color: #002200;color: #CCC;">*</span>window;
    AboutWindowController <span style="color: #002200;color: #CCC;">*</span>aboutWindowController;
<span style="color: #002200;color: #CCC;">&#125;</span>
<span style="color: #a61390;color: #B83A24;">@property</span> <span style="color: #002200;color: #CCC;">&#40;</span>nonatomic, retain<span style="color: #002200;color: #CCC;">&#41;</span> AboutWindowController <span style="color: #002200;color: #CCC;">*</span>aboutWindowController;
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">void</span><span style="color: #002200;color: #CCC;">&#41;</span>showMainWindow;
<span style="color: #a61390;color: #B83A24;">@end</span></pre></div></div>

<p>And the implementation file &#8220;AboutAppDelegate.m&#8221;</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #6e371a;color: #CDC;">#import &quot;AboutAppDelegate.h&quot;</span>
&nbsp;
<span style="color: #a61390;color: #B83A24;">@implementation</span> AboutAppDelegate
<span style="color: #a61390;color: #B83A24;">@synthesize</span> aboutWindowController;
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">void</span><span style="color: #002200;color: #CCC;">&#41;</span>applicationDidFinishLaunching<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #400080;">NSNotification</span> <span style="color: #002200;color: #CCC;">*</span><span style="color: #002200;color: #CCC;">&#41;</span>aNotification <span style="color: #002200;color: #CCC;">&#123;</span>
	<span style="color: #002200;color: #CCC;">&#91;</span>self showMainWindow<span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #002200;color: #CCC;">&#125;</span>
&nbsp;
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">id</span><span style="color: #002200;color: #CCC;">&#41;</span>init<span style="color: #002200;color: #CCC;">&#123;</span>
	<span style="color: #a61390;color: #B83A24;">if</span> <span style="color: #002200;color: #CCC;">&#40;</span>self <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span>super init<span style="color: #002200;color: #CCC;">&#93;</span><span style="color: #002200;color: #CCC;">&#41;</span>	<span style="color: #002200;color: #CCC;">&#123;</span>
		aboutWindowController <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span>AboutWindowController alloc<span style="color: #002200;color: #CCC;">&#93;</span> init<span style="color: #002200;color: #CCC;">&#93;</span>;
	<span style="color: #002200;color: #CCC;">&#125;</span>
	<span style="color: #a61390;color: #B83A24;">return</span> self;
<span style="color: #002200;color: #CCC;">&#125;</span>
<span style="color: #002200;color: #CCC;">-</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">void</span><span style="color: #002200;color: #CCC;">&#41;</span>showMainWindow <span style="color: #002200;color: #CCC;">&#123;</span>
	<span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span>self.aboutWindowController window<span style="color: #002200;color: #CCC;">&#93;</span> makeKeyAndOrderFront<span style="color: #002200;color: #CCC;">:</span>self<span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #002200;color: #CCC;">&#125;</span>
<span style="color: #a61390;color: #B83A24;">@end</span></pre></div></div>

<h1 style="text-align: left;">STEP #5 Set-up the delegate</h1>
<p>Now the steps are strait-forward. In the mainMenu.xib we need to delete the window and set the delegate to the &#8220;File&#8217;s Owner&#8221;.</p>
<p style="text-align: center;"><img class="size-full wp-image-247  aligncenter" title="Last" src="http://chamelo.co.uk/wp-content/uploads/2010/06/Screen-shot-2010-06-09-at-01.52.24.png" alt="" width="447" height="340" /></p>
<h1 style="text-align: left;">STEP #6 Grab the source</h1>
<p style="text-align: left;"><a href="http://chamelo.co.uk/wp-content/uploads/2010/06/About.zip">Source Code</a></p>
<p style="text-align: left;">This completes the second part of Separate Nibs/Xibs. The next part will involve more window controllers and some view controllers. <img src='http://chamelo.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/separate-nibsxibs-part-2/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Access documentation in Xcode</title>
		<link>http://chamelo.co.uk/access-documentation-in-xcode</link>
		<comments>http://chamelo.co.uk/access-documentation-in-xcode#comments</comments>
		<pubDate>Mon, 31 May 2010 17:02:40 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=201</guid>
		<description><![CDATA[I am pretty sure that if you are using Xcode everyday you are already aware of its handy shortcuts. There is one that I came across lately and I loved it. If you want to access the documentation of a class quickly in Xcode just hold down the &#8220;alt&#8221; key and double click on the [...]]]></description>
			<content:encoded><![CDATA[
<p style="text-align: center;"><a href="http://chamelo.co.uk/wp-content/uploads/2010/05/quickaccess.png"><img class="aligncenter size-full wp-image-202" title="quickaccess" src="http://chamelo.co.uk/wp-content/uploads/2010/05/quickaccess.png" alt="" width="447" height="167" /></a></p>
<p style="text-align: left;">I am pretty sure that if you are using Xcode everyday you are already aware of its handy shortcuts. There is one that I came across lately and I loved it. If you want to access the documentation of a class quickly in Xcode just hold down the &#8220;alt&#8221; key and double click on the word (e.g. NSColor) to get a quick note of the corresponding text.</p>

]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/access-documentation-in-xcode/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Separate nibs/xibs</title>
		<link>http://chamelo.co.uk/separate-nibsxibs</link>
		<comments>http://chamelo.co.uk/separate-nibsxibs#comments</comments>
		<pubDate>Mon, 31 May 2010 06:18:22 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Theory]]></category>
		<category><![CDATA[Nibs/Xibs]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=180</guid>
		<description><![CDATA[In case you are wondering why you should separate your nibs/xibs in your project you are in the right post. The Apple resource programming guide explains everything in detail but we are after the following paragraph: &#8220;In the main nib file for a Mac OS X application, consider storing only the application menu bar and an [...]]]></description>
			<content:encoded><![CDATA[
<p style="text-align: center;"><a href="http://chamelo.co.uk/wp-content/uploads/2010/05/nibs.png"><img class="size-full wp-image-181  aligncenter" title="nibs" src="http://chamelo.co.uk/wp-content/uploads/2010/05/nibs.png" alt="" width="426" height="77" /></a></p>
<p>In case you are wondering why you should separate your nibs/xibs in your project you are in the right post. The Apple resource programming guide explains everything in detail but we are after the following paragraph:</p>
<p style="padding-left: 30px;">&#8220;In the main nib file for a Mac OS X application, consider storing only the application menu bar and an optional application delegate object in the nib file. Avoid including any windows or user-interface elements that will not be used until after the application has launched. Instead, place those resources in separate nib files and load them as needed after launch.&#8221; (<a href="http://developer.apple.com/mac/library/documentation/cocoa/conceptual/LoadingResources/CocoaNibs/CocoaNibs.html#//apple_ref/doc/uid/10000051i-CH4-SW7" target="_blank">link</a>)</p>
<p>Having everything in one nib is in general a bad idea. The reason is that you are instantiating everything at once when the application is launching. Of-course in a tiny application you wont even notice a difference in the performance neither in the way you organise the project but when the project is expected to be big you are encouraged to separate it.</p>
<p>For example if you have everything in one nib/xib file you are instantiating the preferences window, about window and other windows and controllers that you may not using.</p>
<p style="text-align: center;"><strong>You should be using multiple nibs.</strong></p>

]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/separate-nibsxibs/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Commercialisation framework</title>
		<link>http://chamelo.co.uk/commercialisation-framework</link>
		<comments>http://chamelo.co.uk/commercialisation-framework#comments</comments>
		<pubDate>Sat, 29 May 2010 18:39:19 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Commercialisation]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Source Code]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=141</guid>
		<description><![CDATA[A mechanism for secure registration method that could generate and validate keys is required for a commercial application. I came across two open source frameworks online: EllipticLicense. AquaticPrime. The main difference between them is, that EllipticLicense is using Elliptic Curve Digital Signature Algorithm (ECDSA) and AquaticPrime is using RSA algorithm for generating keys. According to Certicom [...]]]></description>
			<content:encoded><![CDATA[
<p style="text-align: center;">
<p style="text-align: center;">
<p style="text-align: center;"><a href="http://chamelo.co.uk/wp-content/uploads/2010/05/Screen-shot-2010-05-29-at-20.03.52.png"><img class="size-full wp-image-167  aligncenter" title="License" src="http://chamelo.co.uk/wp-content/uploads/2010/05/Screen-shot-2010-05-29-at-20.03.52.png" alt="" width="404" height="109" /></a></p>
<p>A mechanism for secure registration method that could generate and validate keys is required for a commercial application. I came across two open source frameworks online:</p>
<ul>
<li><a href="http://github.com/dchest/ellipticlicense">EllipticLicense</a>.</li>
<li><a href="http://www.aquaticmac.com">AquaticPrime</a>.</li>
</ul>
<p>The main difference between them is, that EllipticLicense is using Elliptic Curve Digital Signature Algorithm (<a href=" http://en.wikipedia.org/wiki/Elliptic_Curve_DSA">ECDSA</a>) and AquaticPrime is using <a href="http://en.wikipedia.org/wiki/RSA">RSA</a> algorithm for generating keys. According to <a href="http://www.certicom.com/index.php/software-security-solutions">Certicom</a> ECDSA has:</p>
<p><span id="more-141"></span></p>
<ul>
<li>“Faster signing and verification”</li>
<li>“Stronger security that is not affecting the performance”</li>
<li>“Signatures that can protect information beyond archive requirements”</li>
<li>“Competitive differentiation and meeting security requirements”</li>
</ul>
<p>The only disadvantage of ellipticLicense is the lack of support of earlier operating systems. (Mac OS X 10.6  or later)</p>
<p><strong>How to use it EllipticLicense?</strong><br />
First you have to include all the required files and frameworks in the project. The developer provides a tool that generates the product, licence keys and blocked keys.</p>
<ul>
<li>Product &#8211; Generates the public and private keys.</li>
<li>Licence keys &#8211; Generates serial number based on an email.</li>
<li>Blocked keys &#8211; Generates code to block a certain key. (In case is shared illegally)</li>
</ul>
<p><strong>Implementation steps:</strong></p>
<p>1) The product is generated using the above tool. (Generates the public key)<br />
2) Allocation and initialisation of the framework. (Key is generated in step 1.)</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;">EllipticLicense <span style="color: #002200;color: #CCC;">*</span>eLicence <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span>EllipticLicense alloc<span style="color: #002200;color: #CCC;">&#93;</span> initWithPublicKey<span style="color: #002200;color: #CCC;">:</span> key
 curveName<span style="color: #002200;color: #CCC;">:</span>ELCurveNameSecp112r1<span style="color: #002200;color: #CCC;">&#93;</span>;</pre></div></div>

<p>3) Code to validate the name and the serial number.</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #a61390;color: #B83A24;">if</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #002200;color: #CCC;">&#91;</span>eLicence verifyLicenseKey<span style="color: #002200;color: #CCC;">:</span>serialnumber forName<span style="color: #002200;color: #CCC;">:</span>name<span style="color: #002200;color: #CCC;">&#93;</span><span style="color: #002200;color: #CCC;">&#41;</span></pre></div></div>

<p style="text-align: center;">
<p style="text-align: center;"><strong>AquaticPrime has a proper documentation on how to use it online <img src='http://chamelo.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong></p>

]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/commercialisation-framework/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Track Spaces changes [Source Code]</title>
		<link>http://chamelo.co.uk/spaces-changes</link>
		<comments>http://chamelo.co.uk/spaces-changes#comments</comments>
		<pubDate>Fri, 28 May 2010 20:48:02 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[CGSPrivate]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[Spaces]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=125</guid>
		<description><![CDATA[Have you ever wonder how to track space changes in Cocoa? Yes??? Then you were like me, before few months hunting for an answer! I was using a different approach in DockSpaces based on applescript but it was a bit slow and annoying. The solution came from an email &#60;which I manage to lose&#62; and [...]]]></description>
			<content:encoded><![CDATA[
<p style="text-align: center;">
<p style="text-align: center;">
<p style="text-align: center;"><a href="http://chamelo.co.uk/wp-content/uploads/2010/05/Screen-shot-2010-05-28-at-20.54.20.png"></a></p>
<p style="text-align: center;"><a href="http://chamelo.co.uk/wp-content/uploads/2010/05/Training.jpg"></a><a href="http://chamelo.co.uk/wp-content/uploads/2010/05/dockspaces_512x512.png"><img class="aligncenter size-medium wp-image-178" title="dockspaces_512x512" src="http://chamelo.co.uk/wp-content/uploads/2010/05/dockspaces_512x512-300x296.png" alt="" width="300" height="296" /></a></p>
<p style="text-align: center;"><strong>Have you ever wonder how to track space changes in Cocoa?</strong></p>
<p>Yes??? Then you were like me, before few months hunting for an answer! I was using a different approach in DockSpaces based on applescript but it was a bit slow and annoying. The solution came from an email &lt;which I manage to lose&gt; and someone explained me how to use CGSPrivate and track the space changes.</p>
<p>So in case you are interested grab a sample project <a href="https://github.com/nscoding/Spaces-Changed">here</a></p>

]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/spaces-changes/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Suppression Button</title>
		<link>http://chamelo.co.uk/suppression-button</link>
		<comments>http://chamelo.co.uk/suppression-button#comments</comments>
		<pubDate>Fri, 28 May 2010 17:43:31 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[NSAlert]]></category>
		<category><![CDATA[NSUserDefaults]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=92</guid>
		<description><![CDATA[Do you want to know more about it? Ok then, again is quite simple! Allocate and initialize your NSAlert somewhere in your code. if &#40;&#91;&#91;NSUserDefaults standardUserDefaults&#93; boolForKey:@&#34;Information&#34;&#93;!=YES&#41;&#123; &#160; NSAlert *alert = &#91;&#91;&#91;NSAlert alloc&#93; init&#93; autorelease&#93;; &#91;alert addButtonWithTitle:@&#34;OK&#34;&#93;; &#91;alert setMessageText:@&#34;Information&#34;&#93;; &#91;alert setInformativeText:@&#34;blah blah.&#34;&#93;; &#91;alert setShowsSuppressionButton:YES&#93;; &#91;alert beginSheetModalForWindow:main modalDelegate:self didEndSelector:@selector&#40;infoDidEnd:returnCode:contextInfo:&#41; contextInfo:nil&#93;; &#160; &#125; Use a selector and [...]]]></description>
			<content:encoded><![CDATA[
<p style="text-align: center;">
<p style="text-align: center;"><a href="http://chamelo.co.uk/wp-content/uploads/2010/05/Screen-shot-2010-05-28-at-18.38.49-Copy.png"><img class="size-full wp-image-94  aligncenter" title="Suppression Button" src="http://chamelo.co.uk/wp-content/uploads/2010/05/Screen-shot-2010-05-28-at-18.38.49-Copy.png" alt="" width="455" height="201" /></a></p>
<p>Do you want to know more about it? Ok then, again is quite simple! Allocate and initialize your NSAlert somewhere in your code.</p>
<p><span id="more-92"></span></p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #a61390;color: #B83A24;">if</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #400080;">NSUserDefaults</span> standardUserDefaults<span style="color: #002200;color: #CCC;">&#93;</span> boolForKey<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;Information&quot;</span><span style="color: #002200;color: #CCC;">&#93;</span><span style="color: #002200;color: #CCC;">!=</span><span style="color: #a61390;color: #577A61;">YES</span><span style="color: #002200;color: #CCC;">&#41;</span><span style="color: #002200;color: #CCC;">&#123;</span>
&nbsp;
<span style="color: #400080;">NSAlert</span> <span style="color: #002200;color: #CCC;">*</span>alert <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #400080;">NSAlert</span> alloc<span style="color: #002200;color: #CCC;">&#93;</span> init<span style="color: #002200;color: #CCC;">&#93;</span> autorelease<span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #002200;color: #CCC;">&#91;</span>alert addButtonWithTitle<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;OK&quot;</span><span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #002200;color: #CCC;">&#91;</span>alert setMessageText<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;Information&quot;</span><span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #002200;color: #CCC;">&#91;</span>alert setInformativeText<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;blah blah.&quot;</span><span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #002200;color: #CCC;">&#91;</span>alert setShowsSuppressionButton<span style="color: #002200;color: #CCC;">:</span><span style="color: #a61390;color: #577A61;">YES</span><span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #002200;color: #CCC;">&#91;</span>alert beginSheetModalForWindow<span style="color: #002200;color: #CCC;">:</span>main modalDelegate<span style="color: #002200;color: #CCC;">:</span>self didEndSelector<span style="color: #002200;color: #CCC;">:</span><span style="color: #a61390;color: #B83A24;">@selector</span><span style="color: #002200;color: #CCC;">&#40;</span>infoDidEnd<span style="color: #002200;color: #CCC;">:</span>returnCode<span style="color: #002200;color: #CCC;">:</span>contextInfo<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#41;</span> contextInfo<span style="color: #002200;color: #CCC;">:</span><span style="color: #a61390;color: #577A61;">nil</span><span style="color: #002200;color: #CCC;">&#93;</span>;
&nbsp;
<span style="color: #002200;color: #CCC;">&#125;</span></pre></div></div>

<p>Use a selector and check the state of the suppression button!</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #002200;color: #CCC;">-</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">void</span><span style="color: #002200;color: #CCC;">&#41;</span> infoDidEnd<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #400080;">NSAlert</span> <span style="color: #002200;color: #CCC;">*</span><span style="color: #002200;color: #CCC;">&#41;</span>alert
         returnCode<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">int</span><span style="color: #002200;color: #CCC;">&#41;</span>returnCode contextInfo<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #a61390;color: #B83A24;">void</span> <span style="color: #002200;color: #CCC;">*</span><span style="color: #002200;color: #CCC;">&#41;</span>contextInfo<span style="color: #002200;color: #CCC;">&#123;</span>
	<span style="color: #a61390;color: #B83A24;">if</span><span style="color: #002200;color: #CCC;">&#40;</span>returnCode <span style="color: #002200;color: #CCC;">==</span> NSAlertFirstButtonReturn<span style="color: #002200;color: #CCC;">&#41;</span><span style="color: #002200;color: #CCC;">&#123;</span>
		<span style="color: #a61390;color: #B83A24;">if</span> <span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span>alert suppressionButton<span style="color: #002200;color: #CCC;">&#93;</span> state<span style="color: #002200;color: #CCC;">&#93;</span> <span style="color: #002200;color: #CCC;">==</span> NSOnState<span style="color: #002200;color: #CCC;">&#41;</span>
			<span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #400080;">NSUserDefaults</span> standardUserDefaults<span style="color: #002200;color: #CCC;">&#93;</span> setBool<span style="color: #002200;color: #CCC;">:</span><span style="color: #a61390;color: #577A61;">YES</span> forKey<span style="color: #002200;color: #CCC;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;Information&quot;</span><span style="color: #002200;color: #CCC;">&#93;</span>;
		<span style="color: #002200;color: #CCC;">&#125;</span>
<span style="color: #002200;color: #CCC;">&#125;</span></pre></div></div>


]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/suppression-button/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introduction to Core Data</title>
		<link>http://chamelo.co.uk/introduction-to-core-data</link>
		<comments>http://chamelo.co.uk/introduction-to-core-data#comments</comments>
		<pubDate>Fri, 28 May 2010 17:24:14 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Theory]]></category>
		<category><![CDATA[Core Data]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/introduction-to-core-data</guid>
		<description><![CDATA[Core Data is a data model framework that manages data with a formatted SQLite database of the relational entity-attribute-value (EAV) model. The roots of this framework come from the well-known Enterprise Objects Framework (EOF). Core Data is commonly named as a database API for Cocoa (axiomatically wrong since it allocates and deallocates memory of the [...]]]></description>
			<content:encoded><![CDATA[
<p>Core Data is a data model framework that manages data with a formatted SQLite database of the relational entity-attribute-value (EAV) model. The roots of this framework come from the well-known Enterprise Objects Framework (EOF). Core Data is commonly named as a database API for Cocoa (axiomatically wrong since it allocates and deallocates memory of the data objects) and is the most effective solution to data persistence. Data persistence means saving and fetching objects from the disk. The framework supports other data storage formats such as Binary archive and XML, although SQLite is preferred due to its speed and security advantages. The only drawback is that the data file is not human-readable but is possible to explore the contents by using the appropriate command line tool (sqlite3).</p>
<p><span id="more-86"></span></p>
<p>The framework is responsible for defining the &#8220;model&#8221; component of the MVC architecture. Instead of coding data structures, you use the powerful user interface to build a schema representing your data model.</p>
<p>Relational EAV data model consists with:</p>
<ul>
<li>An abstract description of the data is an Entity.</li>
<li>Each entity has Attributes.</li>
<li>Entities have Relationships.</li>
</ul>
<p><strong>Benefits</strong></p>
<p>There are several reasons for using core data:</p>
<ol>
<li>It is extremely fast and flexible regardless the amount of data.</li>
<li>Automatically creates methods for managing data (e.g. fetch, search, filter e.t.c)</li>
<li>Reduce coding of Model (MVC) to its minimum.</li>
<li>Handles huge amounts of data without complaining.</li>
<li>Undo manager operates.</li>
</ol>
<p><strong> </strong></p>
<p><strong>Limitations</strong></p>
<p><strong><span style="font-weight: normal;">Unfortunately core data is not perfect and has two serious limitations that have to be considered before start developing any application:</span></strong></p>
<ul>
<li>The framework has undocumented format on any storing type (even in XML) probably for preserving the ability for Apple to change the format in the near future. Note Core Data must create the database itself otherwise it cannot explore it.</li>
</ul>
<p>Reason: There will be a huge issue if Apple decides to discontinue the framework in the future (not likely but possible) eventually reading an undocumented format is impossible.</p>
<ul>
<li>Core data supports adding entities to the model, even if the store data is created, but when it comes to changing a data type of an existing entity there is no support for data translation.</li>
</ul>
<p>Reason: Changing data type requires writing the code for translating (using NSValueTransformer) or transformable data type has to be used to accept any object.</p>
<p><strong>Alternatives</strong></p>
<p>There are a number of alternative techniques for data persistence and here are the most promising:</p>
<p>• NSMutableDictionary</p>
<p>NSMutableDictionary class manage mutable sets of keys and values. Is a well structured object that easily retrieves data because of the key-value relationships. Searching and filtering works like an array by enumerating the contents. A key-value pair within a dictionary is an entry. Each entry has a name and a value. In principal, the keys are unique and any object can be stored. You can add or delete entries and the object automatically allocates memory as needed. The main weakness is that handling huge amounts of data is inefficient; the fact that all the information needs to be loaded in the memory on start-up is reasonable.</p>
<p>• SQLite Persistent Objects</p>
<p>SQLite Persistent Objects is a different approach for data persistence. In fact it extends a single class and provides SQLite persistent abilities to the object. Although according to the online documentation it does not support several properties. (c-strings, void pointers, structs, unions)</p>
<p>• FMDB</p>
<p>It’s a an Objective-C wrapper around the SQLite C libraries and differs a lot from the other approaches. It implements a significant amount of SQL commands and is open source as well. The drawback in this case is that the wrapper requires a lot of code with SQL statements and eventually the more the code is, the more possibilities of finding bugs.</p>
<p><strong>References</strong></p>
<ul>
<li>Apple developers Session 917 &#8211; What&#8217;s New in Core Data (Available on iTunes for register developers).</li>
<li>Marcus Zarra (2009) Core Data: Apple&#8217;s API for Persisting Data on Mac OS X.</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/introduction-to-core-data/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Theory</title>
		<link>http://chamelo.co.uk/cocoa-design-patterns-quote</link>
		<comments>http://chamelo.co.uk/cocoa-design-patterns-quote#comments</comments>
		<pubDate>Fri, 30 Apr 2010 23:50:52 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Theory]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=69</guid>
		<description><![CDATA[“Coupling between classes should be minimised. Coupling refers to dependencies between objects. Whenever such dependencies exist, they reduce opportunities for reusing the objects independently. It is ironic that inheritance is simultaneously one of the most powerful tools in object oriented programming and on of the leading causes of coupling”. Buck, E. M. &#038; Yacktman, D. [...]]]></description>
			<content:encoded><![CDATA[
<p>“Coupling between classes should be minimised. Coupling refers to dependencies between objects. Whenever such dependencies exist, they reduce opportunities for reusing the objects independently. It is ironic that inheritance is simultaneously one of the most powerful tools in object oriented programming and on of the leading causes of coupling”. </p>
<p>Buck, E. M. &#038; Yacktman, D. A., 2009. Cocoa Design Patterns (Developer&#8217;s Library). 1 Ed.</p>

]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/cocoa-design-patterns-quote/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NSToolbar selectable icon</title>
		<link>http://chamelo.co.uk/nstoolbar-selectable-icon</link>
		<comments>http://chamelo.co.uk/nstoolbar-selectable-icon#comments</comments>
		<pubDate>Sat, 17 Apr 2010 16:52:43 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[NSToolbar]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=23</guid>
		<description><![CDATA[You ever tried to create a toolbar using Interface Builder? I know that is not compatible with earlier versions of OS X but it is so easy, you can’t even imagine! You simply drag and drop the NSToolbar to the window and you have implemented one of the standard interfaces for your preferences window! Although [...]]]></description>
			<content:encoded><![CDATA[
<p>You ever tried to create a toolbar using Interface Builder?</p>
<p>I know that is not compatible with earlier versions of OS X but it is so easy, you can’t even imagine! You simply drag and drop the NSToolbar to the window and you have implemented one of the standard interfaces for your preferences window!</p>
<p>Although you will notice that toolbar items are not selected! You need to add the code, to get the selectable toolbar items!</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #002200;color: #CCC;">-</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #400080;">NSArray</span> <span style="color: #002200;color: #CCC;">*</span><span style="color: #002200;color: #CCC;">&#41;</span>toolbarSelectableItemIdentifiers<span style="color: #002200;color: #CCC;">:</span><span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #400080;">NSToolbar</span> <span style="color: #002200;color: #CCC;">*</span><span style="color: #002200;color: #CCC;">&#41;</span>toolbar <span style="color: #002200;color: #CCC;">&#123;</span>
             <span style="color: #a61390;color: #B83A24;">return</span> <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #002200;color: #CCC;">&#91;</span>toolbar items<span style="color: #002200;color: #CCC;">&#93;</span> valueForKey<span style="color: #002200;color: #CCC;">:</span>@”itemIdentifier”<span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #002200;color: #CCC;">&#125;</span></pre></div></div>

<p style="text-align: center;"><a href="http://chamelo.co.uk/wp-content/uploads/2010/04/Screen-shot-2010-05-28-at-18.15.15-Copy-1.png"><img class="size-full wp-image-79    aligncenter" title="Toolbar" src="http://chamelo.co.uk/wp-content/uploads/2010/04/Screen-shot-2010-05-28-at-18.15.15-Copy-1.png" alt="" width="391" height="124" /></a></p>

]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/nstoolbar-selectable-icon/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bottom colour like Finder</title>
		<link>http://chamelo.co.uk/bottom-colour-like-finder</link>
		<comments>http://chamelo.co.uk/bottom-colour-like-finder#comments</comments>
		<pubDate>Sat, 17 Apr 2010 16:49:37 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[NSWindon]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=20</guid>
		<description><![CDATA[I was looking how to make the window bottom to look like Finder&#8230;. Is one line of code: &#91;Window setContentBorderThickness:20.0f forEdge:NSMinYEdge&#93;;]]></description>
			<content:encoded><![CDATA[
<p>I was looking how to make the window bottom to look like Finder&#8230;. Is one line of code:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #002200;color: #CCC;">&#91;</span>Window setContentBorderThickness<span style="color: #002200;color: #CCC;">:</span>20.0f forEdge<span style="color: #002200;color: #CCC;">:</span>NSMinYEdge<span style="color: #002200;color: #CCC;">&#93;</span>;</pre></div></div>

<p style="text-align: center;"><a href="http://chamelo.co.uk/wp-content/uploads/2010/04/Screen-shot-2010-05-28-at-18.09.31-Copy.png"><img class="size-full wp-image-75 aligncenter" title="Bottom colour like Finder" src="http://chamelo.co.uk/wp-content/uploads/2010/04/Screen-shot-2010-05-28-at-18.09.31-Copy.png" alt="" width="420" height="137" /></a></p>

]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/bottom-colour-like-finder/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Random Pick</title>
		<link>http://chamelo.co.uk/random-pick</link>
		<comments>http://chamelo.co.uk/random-pick#comments</comments>
		<pubDate>Sat, 17 Apr 2010 16:42:36 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Random]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=18</guid>
		<description><![CDATA[Random pick Well I was developing Greek Radio for the iPhone I wanted to add a shuffle shake functionality. It wasn’t that hard, I implemented the accelerometer delegate method and literary all I had to do was to pick a random station from the list. Example: 1 random&#40;&#41; % &#91;list count&#93;; It was working perfectly, [...]]]></description>
			<content:encoded><![CDATA[
<p>Random pick </p>
<p>Well I was developing Greek Radio for the iPhone I wanted to add a shuffle shake functionality. It wasn’t that hard, I implemented the accelerometer delegate method and literary all I had to do was to pick a random station from the list.</p>
<p>Example:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;">random<span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #002200;color: #CCC;">&#41;</span> <span style="color: #002200;color: #CCC;">%</span> <span style="color: #002200;color: #CCC;">&#91;</span>list count<span style="color: #002200;color: #CCC;">&#93;</span>;</pre></td></tr></table></div>

<p>It was working perfectly, with only one issue; random wasn’t random at all, actually it was playing the stations with the exact same order every time, what the hell?</p>
<p>So anyone has any clue? Just let me know…</p>
<p>Finally random() was replaced with arc4random() which seems to work perfectly <img src='http://chamelo.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/random-pick/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Loop in your Home directory</title>
		<link>http://chamelo.co.uk/loop-in-your-home-directory</link>
		<comments>http://chamelo.co.uk/loop-in-your-home-directory#comments</comments>
		<pubDate>Sat, 17 Apr 2010 08:33:28 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[NSDirectoryEnumerator]]></category>
		<category><![CDATA[NSEnumerator]]></category>
		<category><![CDATA[NSFileManager]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=10</guid>
		<description><![CDATA[I wanted to implement a method that will go through all my files in my home directory. I couldn’t believe how easy that was. I have done it in C before and it was really really hard! Thank God, cocoa does it with a few lines: 1 2 3 4 5 6 7 8 NSString [...]]]></description>
			<content:encoded><![CDATA[
<p> I wanted to implement a method that will go through all my files in my home directory. I couldn’t believe how easy that was. I have done it in C before and it was really really hard! Thank God, cocoa does it with a few lines:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;"><span style="color: #400080;">NSString</span> <span style="color: #002200;color: #CCC;">*</span>path <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #400080;">NSString</span> stringWithFormat<span style="color: #002200;color: #CCC;">:</span>@”<span style="color: #002200;color: #CCC;">%</span>@<span style="color: #002200;color: #CCC;">/</span>”,NSHomeDirectory<span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #002200;color: #CCC;">&#41;</span><span style="color: #002200;color: #CCC;">&#93;</span>; 
<span style="color: #400080;">NSFileManager</span> <span style="color: #002200;color: #CCC;">*</span>manager <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span><span style="color: #400080;">NSFileManager</span> defaultManager<span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #400080;">NSDirectoryEnumerator</span> <span style="color: #002200;color: #CCC;">*</span>dirEnum <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span>manager enumeratorAtPath<span style="color: #002200;color: #CCC;">:</span>path<span style="color: #002200;color: #CCC;">&#93;</span>;
<span style="color: #400080;">NSString</span> <span style="color: #002200;color: #CCC;">*</span>file;
&nbsp;
<span style="color: #a61390;color: #B83A24;">while</span> <span style="color: #002200;color: #CCC;">&#40;</span>file <span style="color: #002200;color: #CCC;">=</span> <span style="color: #002200;color: #CCC;">&#91;</span>dirEnum nextObject<span style="color: #002200;color: #CCC;">&#93;</span><span style="color: #002200;color: #CCC;">&#41;</span><span style="color: #002200;color: #CCC;">&#123;</span>
	NSLog<span style="color: #002200;color: #CCC;">&#40;</span>@”<span style="color: #002200;color: #CCC;">%</span>@”,file <span style="color: #002200;color: #CCC;">&#41;</span>;
<span style="color: #002200;color: #CCC;">&#125;</span></pre></td></tr></table></div>


]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/loop-in-your-home-directory/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Percentage Sign</title>
		<link>http://chamelo.co.uk/percentage-sign</link>
		<comments>http://chamelo.co.uk/percentage-sign#comments</comments>
		<pubDate>Sat, 17 Apr 2010 08:32:20 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[NSLog]]></category>

		<guid isPermaLink="false">http://chamelo.co.uk/?p=8</guid>
		<description><![CDATA[Have you every tried to print out or display the percentage sign ‘%’ in Cocoa? I haven’t and it was quite tricky, although after 20 minutes (hehe) I found a way to do it… so here we go: 1 NSLog&#40;@&#34;Here is my percentage sing %%&#34;&#41;;]]></description>
			<content:encoded><![CDATA[
<p>Have you every tried to print out or display the percentage sign ‘%’ in Cocoa? <img src='http://chamelo.co.uk/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  I haven’t and it was quite tricky, although after 20 minutes (hehe) I found a way to do it… so here we go:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="objc" style="font-family:monospace;color: #9CC276;">NSLog<span style="color: #002200;color: #CCC;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;color: #666666;">&quot;Here is my percentage sing %%&quot;</span><span style="color: #002200;color: #CCC;">&#41;</span>;</pre></td></tr></table></div>


]]></content:encoded>
			<wfw:commentRss>http://chamelo.co.uk/percentage-sign/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

