Saturday, November 3, 2007


PATH_MAX simply isn't



Many C/C++ programmers at some point may run into a limit known as PATH_MAX. Basically, if you have to keep track of paths to files/directories, how big does your buffer have to be?
Most Operating Systems/File Systems I've seen, limit a filename or any particular path component to 255 bytes or so. But a full path is a different matter.

Many programmers will immediately tell you that if your buffer is PATH_MAX, or PATH_MAX+1 bytes, it's long enough. A good C++ programmer of course would use C++ strings (std::string or similar with a particular API) to avoid any buffer length issues. But even when having dynamic strings in your program taking care of the nitty gritty issue of how long your buffers need to be, they only solve half the problem.

Even a C++ programmer may at some point want to call the getcwd() or realpath() (fullpath() on Windows) functions, which take a pointer to a writable buffer, and not a C++ string, and according to the standard, they don't do their own allocation. Even ones that do their own allocation very often just allocate PATH_MAX bytes.

getcwd() is a function to return what the current working directory is. realpath() can take a relative or absolute path to any filename, containing .. or levels of /././. or extra slashes, and symlinks and the like, and return a full absolute path without any extra garbage. These functions have a flaw though.

The flaw is that PATH_MAX simply isn't. Each system can define PATH_MAX to whatever size it likes. On my Linux system, I see it's 4096, on my OpenBSD system, I see it's 1024, on Windows, it's 260.

Now performing a test on my Linux system, I noticed that it limits a path component to 255 characters on ext3, but it doesn't stop me from making as many nested ones as I like. I successfully created a path 6000 characters long. Linux does absolutely nothing to stop me from creating such a large path, nor from mounting one large path on another. Running getcwd() in such a large path, even with a huge buffer, fails, since it doesn't work with anything past PATH_MAX.

Even a commercial OS like Mac OS X defines it as 1024, but tests show you can create a path several thousand characters long. Interestingly enough, OSX's getcwd() will properly identify a path which is larger than its PATH_MAX if you pass it a large enough buffer with enough room to hold all the data. This is possible, because the prototype for getcwd() is:
char *getcwd(char *buf, size_t size);


So a smart getcwd() can work if there's enough room. But unfortunately, there is no way to determine how much space you actually need, so you can't allocate it in advance. You'd have to keep allocating larger and larger buffers hoping one of them will finally work, which is quite retarded.

Since a path can be longer than PATH_MAX, the define is useless, writing code based off of it is wrong, and the functions that require it are broken.

An exception to this is Windows. It doesn't allow any paths to be created larger than 260 characters. If the path was created on a partition from a different OS, Windows won't allow anything to access it. It sounds strange that such a small limit was chosen, considering that FAT has no such limit imposed, and NTFS allows paths to be 32768 characters long. I can easily imagine someone with a sizable audio collection having a 300+ character path like so:
"C:\Documents and Settings\Jonathan Ezekiel Cornflour\My Documents\My Music\My Personal Rips\2007\Technological\Operating System Symphony Orchestra\The GNOME Musical Men\I Married Her For Her File System\You Don't Appreciate Marriage Until You've Noticed Tax Pro's Wizard For Married Couples.Track 01.MP5"


Before we forget, here's the prototype for realpath:
char *realpath(const char *file_name, char *resolved_name);


Now looking at that prototype, you should immediately say to yourself, but where's the size value for resolved_name? We don't want a buffer overflow! Which is why OSs will implement it based on the PATH_MAX define.
The resolved_name argument must refer to a buffer capable of storing at least PATH_MAX characters.

Which basically means, it can never work on a large path, and no clever OS can implement around it, unless it actually checks how much RAM is allocated on that pointer using an OS specific method - if available.

For these reasons, I've decided to implement getcwd() and realpath() myself. We'll discuss the exact specifics of realpath() next time, for now however, we will focus on how one can make their own getcwd().

The idea is to walk up the tree from the working directory, till we reach the root, along the way noting which path component we just went across.
Every modern OS has a stat() function which can take a path component and return information about it, such as when it was created, which device it is located on, and the like. All these OSs except for Windows return the fields st_dev and st_ino which together can uniquely identify any file or directory. If those two fields match the data retrieved in some other way on the same system, you can be sure they're the same file/directory.
To start, we'd determine the unique ID for . and /, once we have those, we can construct our loop. At each step, when the current doesn't equal the root, we can change directory to .., then scan the directory (using opendir()+readdir()+closedir()) for a component with the same ID. Once a matching ID is found, we can denote that as the correct name for the current level, and move up one.

Code demonstrating this in C++ is as follows:


bool getcwd(std::string& path)
{
typedef std::pair<dev_t, ino_t> file_id;

bool success = false;
int start_fd = open(".", O_RDONLY); //Keep track of start directory, so can jump back to it later
if (start_fd != -1)
{
struct stat sb;
if (!fstat(start_fd, &sb))
{
file_id current_id(sb.st_dev, sb.st_ino);
if (!stat("/", &sb)) //Get info for root directory, so we can determine when we hit it
{
std::vector<std::string> path_components;
file_id root_id(sb.st_dev, sb.st_ino);

while (current_id != root_id) //If they're equal, we've obtained enough info to build the path
{
bool pushed = false;

if (!chdir("..")) //Keep recursing towards root each iteration
{
DIR *dir = opendir(".");
if (dir)
{
dirent *entry;
while ((entry = readdir(dir))) //We loop through each entry trying to find where we came from
{
if ((strcmp(entry->d_name, ".") && strcmp(entry->d_name, "..") && !lstat(entry->d_name, &sb)))
{
file_id child_id(sb.st_dev, sb.st_ino);
if (child_id == current_id) //We found where we came from, add its name to the list
{
path_components.push_back(entry->d_name);
pushed = true;
break;
}
}
}
closedir(dir);

if (pushed && !stat(".", &sb)) //If we have a reason to contiue, we update the current dir id
{
current_id = file_id(sb.st_dev, sb.st_ino);
}
}//Else, Uh oh, can't read information at this level
}
if (!pushed) { break; } //If we didn't obtain any info this pass, no reason to continue
}

if (current_id == root_id) //Unless they're equal, we failed above
{
//Built the path, will always end with a slash
path = "/";
for (std::vector<std::string>::reverse_iterator i = path_components.rbegin(); i != path_components.rend(); ++i)
{
path += *i+"/";
}
success = true;
}
fchdir(start_fd);
}
}
close(start_fd);
}

return(success);
}


Before we accept that as the defacto method to use in your application, let us discuss the flaws.

As mentioned above, it doesn't work on Windows, but a simple #ifdef for Windows can just make it a wrapper around the built in getcwd() with a local buffer of size PATH_MAX, which is fine for Windows, and pretty much no other OS.

This function uses the name getcwd() which can conflict with the built in C based one which is a problem for certain compilers. The fix is to rename it, or put it in its own namespace.

Next, the built in getcwd() implementations I checked only have a trailing slash on the root directory. I personally like having the slash appended, since I'm usually concatenating a filename onto it, but note that if you're not using it for concatenation, but to pass to functions like access(), stat(), opendir(), chdir(), and the like, an OS may not like doing the call with a trailing slash. I've only noticed that being an issue with DJGPP and a few functions. So if it matters to you, the loop near the end of the function can easily be modified to not have the trailing slash, except in the case that the root directory is the entire path.

This function also changes the directory in the process, so it's not thread safe. But then again, many built in implementations aren't thread safe either. If you use threads, calculate all the paths you need prior to creating the threads. Which is probably a good idea, and keep using path names based off of your absolute directories in your program, instead of changing directories during the main execution elsewhere in the program. Otherwise, you'll have to use a mutex around the call, which is also a valid option.

There could also be the issue that some level of the path isn't readable. Which can happen on UNIX, where to enter a directory, one only needs execute permission, and not read permission. I'm not sure what one can do in that case, except maybe fall back on the built in one hoping it does some magical Kernel call to get around it. If anyone has any advice on this one, please post about it in the comments.

Lastly, this function is written in C++, which is annoying for C users. The std::vector can be replaced with a linked list keeping track of the components, and at the end, allocate the buffer size needed, and return the allocated buffer. This requires the user to free the buffer on the outside, but there really isn't any other safe way of doing this.
Alternatively, instead of a linked list, a buffer which is constantly reallocated can be used while building the path, constantly memmove()'ing the built components over to the higher part of the buffer.

During the course of the rest of the program, all path manipulation should be using safe allocation managing strings such as std::string, or should be based off of the above described auto allocating getcwd() and similar functions, and constantly handling the memory management, growing as needed. Be careful when you need to get any path information from elsewhere, as you can never be sure how large it will be.

I hope developers realize that when not on Windows, using the incorrect define PATH_MAX is just wrong, and fix their applications. Next time, we'll discuss how one can implement their own realpath().

2,346 comments:

«Oldest   ‹Older   1401 – 1600 of 2346   Newer›   Newest»
Indhu said...

thanks for sharing this informations.
Selenium Training in Coimbatore

Software Testing Course in Coimbatore

python training institute in coimbatore

data science training in coimbatore

android training institutes in coimbatore

ios training in coimbatore

aws training in coimbatore

Study zone said...

Thanks for sharing this amazing article
movvie4me.today

Baaghi 3 full movie download movie4me

chhichooree full movie download movie4me

kabir singh full movie download movie4me

Safia Nora said...

Hey, thanks for your awesome sharing and you’ve done a great job the article was up to the mark and appreciating you to be continued with such effort. Wonderful experience gathered while I was going through your great article. keep it up and best of luck at all times Shock Collar for small dogs

bhavesh said...

I love this thx for that

https://gradeup1.blogspot.com/2020/05/cbse-to-evaluate-answersheets-of-class.html?m=1

Indhu said...

thanks for sharing this informations.
python training institute in coimbatore
python course in coimbatore
Software Testing Course in Coimbatore
Java training in coimbatore
artificial intelligence training in coimbatore
C and C++ training in coimbatore
android training institutes in coimbatore

Karthik said...

check out my flower wishing Images Good MOrning Flower Wishes Images free Download

bhoora said...

"Latest Version of
Mobile Strike Apk Mod free download
Mobile strike apk mod:- The mobile strike is the world's largest MMO game. In this game you are the biggest action hero, Arnold Schwarzenegger. This is an online strategy game where you have to build your base, train your elite troop members,

unknown said...

Talk with Strangerstalk to strangers in Online Free Chat rooms where during a safe environment.
From friendships to relationships.omegle teen Talk With Stranger is that the best online chatting site.
Its the simplest alternative to airg chat, Badoo , omegle & mocospace. If you're keen on speaking
with people on the web ,chat random or want to seek out omegle girls, do free texting or sexting, make new friends.
you'll find your omegle lady here. Please note this is often not a sexting site so you can't do sexting
online. this is often a familychatous friendly chat site. we've voice chat if you would like to try to to phone
chat online. Our most viral is that the 1-1 one on one random chat.talkwithstranger No check in on login needed.
we've teengers also asanonymous chat older people that want to satisfy new people. Online random chat is that the best
chatrandom alternative.

Indhu said...

Thanks for sharing this blog
python training institute in coimbatore

python course in coimbatore

android training institutes in coimbatore

amazon web services training in coimbatore

Java training in coimbatore

artificial intelligence training in coimbatore

Dhanraj said...

slogans on mahatma gandhi
slogans to save trees
save water drawings
slogans to save water
save water slogans
How to Zip Files

ECOM NEWS said...
This comment has been removed by the author.
ECOM NEWS said...

digital marketing thanks for sharing valuable information. Your blogs were helpful to Azure learners. I request to update the blog through step-by-step.

ECOM NEWS said...

digital marketing facebook affiliate marketing amazon instagram amazon affiliate niche site Email Marketing Make Money Online

Rahul said...

Excellent Blog..Thanks for sharing..

Data Science Training in Chennai | Best Data Science Training in Chennai
Data Science Training in OMR | Data Science Training in Chennai | Best Data Science Training in Chennai
Data Science Training in Velachery | Data Science Training in Chennai
Data Science Training in Tambaram | Data Science Training in Chennai
Data Science Training in anna nagar | Data Science Training in Chennai

Angela said...

I found your article on Google when I was surfing, it is written very nicely and is optimized.Thank you I visit your website regularly.
hindi vyakaran pdf

Venkatesh CS said...

Excellent Blog. Thank you so much for sharing.
salesforce training in chennai

mahajan said...

very informative.
I have a website: https://rgprofit.com
My site niche is digital products and services review and how to make money blogging tips

Amit Karmakar said...

High PR Profile Creation Sites

Nadeem Technical said...

बहुत अच्छी जानकारी आपने साझा की है अगर कोई भी हिंदी में पढ़ना चाहता है तो
HindiNs जरूर आएं

Nadeem Technical said...

बहुत अच्छी जानकारी आपने साझा की है अगर कोई भी हिंदी में पढ़ना चाहता है तो
HindiNs जरूर आएं

Tutorials said...

Thanks for the article. Its very useful. Keep sharing. 
  AWS training in chennai  |     Big Data training in chennai    Python training in chennai   

Tutorials said...

Thanks for the article. Its very useful. Keep sharing. 
  aws online training    |     aws online training chennai      aws training online      

subha said...

Your technical information related with java programming is very useful and interesting. Also share updated details about java in your website. Thanks for sharing this article.thanks a lot guys.
Ai & Artificial Intelligence Course in Chennai
PHP Training in Chennai
Ethical Hacking Course in Chennai Blue Prism Training in Chennai
UiPath Training in Chennai

Godaddy Promo Code said...

Thanks very nice article keep up the good work
DVDVilla

ALL IN ONE said...

Kho Kho Game Rules

Angela said...

I found your article on Google when I was surfing, it is written very nicely and is optimized.Thank you I visit your website regularly.
nit goa

SSK Law Firm said...

Really useful information. Thank you so much for sharing.It will help everyone.Keep Post.
Property Legal Lawyers in Chennai
Document Registration Lawyers in Chennai
Construction Issues Illegal Possession Lawyers in Chennai
Consumer Lawyers in Chennai
Consumer Fraud Lawyers in Chennai
Property Fraud Lawyers in Chennai
Deficiency in Service Lawyers in Chennai
Corporate Lawyers Lawyers in Chennai
Copyright Registration Lawyers in Chennai

Paul Allen said...

Thank you so much for this excellent blog article. Your writing style and the way you have
presented your content is awesome. Now I am pretty clear on this topic. anker soundcore pro price

CCC Service said...

Enjoyed reading the article above, really explains everything in detail, the article is very interesting and effective. Thank you and good luck…
'CCC Service
AC Service in Chennai
Fridge Service in Chennai
Washing Machine Service in Chennai
LED LCD TV Service in Chennai
Microwave Oven Service in Chennai'

Friendship Shayari said...

thanks for this,..
Friendship Shayari

Nadeem Technical said...

Thanks a lot For Sharing This Information Knowledge Thanks Angie

OInline Paise Kaise Kamaye

Shayari said...

Attitude Status
thax a lot,.

TIC Academy said...

Great Blog. Thnaks.
SAP Training in Chennai
Java Training in Chennai
Software Testing Training in Chennai
.Net Training in Chennai
Hardware and Networking Training in Chennai
AWS Training in Chennai
Azure Training in Chennai
Selenium Training in Chennai
QTP Training in Chennai
Android Training in Chennai

AlwaysWantedTo said...

Thanks for the nice article. I found it really interesting. Thank you for taking time to explore on wal katha with your knowledge on walkatha9 as well. It is indeed a great article.

Shayari Sad said...

thanx,..
Shayari Sad

Dharmik paneliya said...

Thank you for this article to learn web design course in surat
Start affiliate marketing on Facebook

Somalia said...

Alight Motion Pro Fully Unlocked MOD APKhttps://alightmotion.pro/

David said...

Hey buddy, your article is fantastic, and I like it. This is very helpful for me for my knowledge. I just call it a fantastic article... Love it.
You can check: Rocketman Sinhala Subtitles

Facebook Youtube Viral Platform said...

Hey, thanks for your awesome sharing and you’ve done a great job the article was up to the mark and appreciating you to be continued with such effort. Wonderful experience gathered while I was going through your great article. keep it up and best of luck at all times. Custom Velcro Patches

anunath said...

thanks
best inforamtion website

TerA said...

The recent sex with my boyfriend. Read the latest sex story now.

Ajay said...

ApkModerz

varsha said...

Thank you to the perform as well as discuss anything incredibly important in my opinion
AWS training in chennai | AWS training in annanagar | AWS training in omr | AWS training in porur | AWS training in tambaram | AWS training in velachery


TerA said...

The time when I fuc*ed my friend's girlfriend. Read the full story here.


Blog Admin said...

Join our WhatsApp Group here with Invitation link

Fuel Digital Marketing said...

nice post.thanks for sharing.We know how that feels as our clients always find themselves to be the top rankers. It's really easy when you consult that best SEO company in Chennai.

Best SEO Services in Chennai | digital marketing agencies in chennai |Best seo company in chennai | digital marketing consultants in chennai | Website designers in chennai

Fuel Digital Marketing said...

thanks for your article with best post.We are the Best Digital Marketing Agency in Chennai, Coimbatore, Madurai and change makers of digital! For Enquiry Contact us @+91 9791811111

Best SEO Services in Chennai | digital marketing agencies in chennai |Best seo company in chennai | digital marketing consultants in chennai | Website designers in chennai

kavya said...

Thanks for sharing, it was informative. We play a small role in upskilling people providing the latest tech courses. Join us to upgradefortinet training

Aditi Gupta said...

Wow it is really wonderful and awesome thus it is very much useful for me to understand many concepts and helped me a lot.

Mumbai Instagram followers We are offer provided to real & active instagram followers. More details to contact us +917339876756

snk social fame said...

Wonderful information you wrote here in this post. I have best site to Buy Instagram Followers USA and get high quality instagram audience.

Mickey. said...

Great Article!! Informative and Meaningful.

https://devu.in/machine-learning-training-in-bangalore/

gangagyan said...

Wowvery nice post this is very likly Pariwarik labh

Hero said...


Thank You for the excellent articles will surely read more of yours and this article helped me a lot :) ...

How to lose weight fast without exercise

Weight Loss Diet Plan

Fat Cutter Drink

Diet Plan for Weight Loss

Veg Diet Plan

Weight Gain Diet Plan

BEST DIET PLAN FOR WEIGHT LOSS

Training for IT and Software Courses said...

I have recently visited your blog profile. I am totally impressed by your blogging skills and knowledge.

Cloud Computing Online Training

Cloud Computing Classes Online

Cloud Computing Training Online

Online Cloud Computing Course

Cloud Computing Course Online

Training for IT and Software Courses said...

Thank you for excellent article.You made an article that is interesting.

Hadoop Online Training

Hadoop Classes Online

Hadoop Training Online

Online Hadoop Course

Hadoop Course Online

Training for IT and Software Courses said...

Very interesting blog Thank you for sharing such a nice and interesting blog and really very helpful article.

Amazon web services Training in Bangalore

Amazon web services class in Bangalore

learn Amazon web services in Bangalore

places to learn Amazon web services in Bangalore

Amazon web services schools in Bangalore

Amazon web services school reviews in Bangalore

Amazon web services Training reviews in Bangalore

Amazon web services training in Bangalore

Amazon web services institutes in Bangalore

Amazon web services trainers in Bangalore

learning Amazon web services in Bangalore

where to learn Amazon web services in Bangalore

best places to learn Amazon web services in Bangalore

top places to learn Amazon web services in Bangalore

Amazon web services Training in Bangalore India

Tutorials said...

Thanks for the article. Its very useful. Keep sharing. 
  aws online training    |     aws online training chennai      aws training online    

Ashif said...


Very Good Information Share..
Backlink kya hai

Amit Kumar said...

Very Good Information Share..
paisa kamane ka tarika hindi me

Amit Kumar said...

Very Good Information Share..
paisa kamane ka tarika hindi me

devi said...

I appreciate your blog. Thanks for sharing valuable information. Your blogs were helpful to Azure learners. I request to update the blog through step-by-step. It’s quite interesting to read content like this. Data Science Training Course In Chennai | Certification | Online Course Training | Data Science Training Course In Bangalore | Certification | Online Course Training | Data Science Training Course In Hyderabad | Certification | Online Course Training | Data Science Training Course In Coimbatore | Certification | Online Course Training | Data Science Training Course In Online | Certification | Online Course Training

jesia said...

wonderful article. Very interesting to read this article.I would like to thank you for the efforts you had made for writing this awesome article. This article resolved my all queries. keep it up.


Robotic Process Automation (RPA) Training in Chennai | Robotic Process Automation (RPA) Training in anna nagar | Robotic Process Automation (RPA) Training in omr | Robotic Process Automation (RPA) Training in porur | Robotic Process Automation (RPA) Training in tambaram | Robotic Process Automation (RPA) Training in velachery






radhika said...

Thanks for provide great informatic and looking beautiful blog.
AWS training in Chennai | Certification | Online Course Training | AWS training in Bangalore | Certification | Online Course Training | AWS training in Hyderabad | Certification | Online Course Training | AWS training in Coimbatore | Certification | Online Course Training | AWS training in Online | Certification | Online Course Training

Anonymous said...

very useful informative
data science training in bangalore

Online Training Courses said...

As a dot developer should aware of those industrial standards to get avail the job in a reputed company. Continue reading to know more about dot net online course.

Online Training Courses said...

Reasons to Become a Data Science Specialist

https://datasciencecourse229747904.wordpress.com/

Anonymous said...

python training in bangalore | python online training
artificial intelligence training in bangalore
| artificial intelligence online training

machine learning training in bangalore | machine learning online training
uipath training in bangalore | uipath online training
blockchain training in bangalore | blockchain online training

Anonymous said...

impressive thank you for share information
AWS Training in bangalore

Lottery Winning Tips said...

Thanks for sharing valuable information.It will help everyone.keep Post.
Kerala Lottery Results

Dealdeg said...

Dealdeg
Gaming Laptop under Rs.130000

studynotebd said...

tr vibes hotstar apk download

Anonymous said...

https://www.indiapostad.com/

SKG said...

PUBG Mobile Redeem Code
PUBG Mobile Redeem Code
PUBG Mobile Redeem Code
PUBG Mobile Redeem Code
PUBG Mobile Redeem Code
PUBG Mobile Redeem Code

James Williams said...

Nice Post. Thanks for sharing the great information.
Java Online Training
Python Online Training
PHP Online Training

shubham said...

get this Camera 360 Mod Apk for taking Beutiful Pics from your Normal camera
https://www.moddedapks.co/camera360-v9-7-9-vip-latest-apk4free/

For Editing Apks and making mods get the lucky patcher Mod Apk
https://www.moddedapks.co/lucky-patcher-v8-8-3-latest-apk4free/

Anonymous said...

Good information.
pcb design training in bangalore
azure training in bangalore
reactjs training in bangalore

shubham said...

Screen Recorder Mod Apk No Watermark On Videos
https://www.moddedapks.co/hd-screen-recorder-video-recorder-irecorder-v1-0-66-0623-01-vip-latest/

Best File Manager Apk
https://www.moddedapks.co/es-file-explorer-file-manager-pro-v1-1-4-1-v4-2-2-7-3-mod-latest/

Anonymous said...

Thanks for sharing good information.
pcb design training in bangalore
reactjs training in bangalore
azure training in bangalore

Rashika said...

Great information!! Thanks for sharing nice blog.

Rashika said...

Digital Marketing Training in Chennai | Certification | SEO Training Course | Digital Marketing Training in Bangalore | Certification | SEO Training Course | Digital Marketing Training in Hyderabad | Certification | SEO Training Course | Digital Marketing Training in Coimbatore | Certification | SEO Training Course | Digital Marketing Online Training | Certification | SEO Online Training Course


Ashok said...

Leptoconnect weight loss review 2020

รับพรีออเดอร์-ขนมเตอร์กิชดีไลท์และสินค้าจากประเทศตุรกี said...

Bodrum Özel Tekne Kiralama
Bodrum Tekne Kiralama
Özel Tekne kiralama Bodrum
Bodrum Günübirlik Turlar
Bodrum Tekne Turu Kiralama
Bodrum Özel Tekne Turu Kiralama
istanbul psikolog
istanbul terapist
Yaşlılık Depresyonu Tedavisi
Yaşlılık Depresyonu Nedenleri
Yaşlılık Depresyonu İçin Öneriler

รับพรีออเดอร์-ขนมเตอร์กิชดีไลท์และสินค้าจากประเทศตุรกี said...

kokteyl catering
kokteyl catering fiyatları
istanbul kokteyl catering
catering kokteyl menüleri
fuar yemek organizasyon
fuar yemek organizasyo firmaları
fuar için yemek firmaları
düğün yemek organizasyonu
düğün yemek organizasyonu yapan firmalar
istanbul kokteyl catering
istanbul kokteyl catering firmaları
Kokteyl catering fiyatları
istanbul catering firmaları listesi
istanbul catering şirketleri
catering şirketleri istanbul
istanbul daki catering firmaları
300 kişilik yemek Fiyatları
istanbul fuar yemek organizasyonn
istanbul fuar yemek organizasyon firmaları
istanbul fuar için yemek firmaları


kıl çadır
kıl çadır nedir
kıl çadır fiyatları sahibinden
kıl çadırı düğün salonu
yörük çadır
osmanlı çadır
otağ kıl çadır

Unknown said...

After reading your article I was amazed. I know that you explain it very well. And I hope that other readers will also experience how I feel after reading your article.

microsoft azure training in bangalore

microsoft azure courses in bangalore

microsoft azure classes in bangalore

microsoft azure training institute in bangalore

microsoft azure course syllabus

best microsoft azure training

microsoft azure training centers

Anonymous said...

Thanks for sharing information.
python training in bangalore | python online trainng
artificial intelligence training in bangalore | artificial intelligence online training
uipath training in bangalore | uipath online training
blockchain training in bangalore | blockchain online training

IT Technology Updates said...

I just followed your blogs and its very interesting .you are a great writer..What else i can say.Appreciate your work..

Selenium Training in vadapalani | Selenium Training in Porur | Selenium Training in chennaii | Selenium Training in anna nagar | Selenium Training in porur | Selenium Training in omr | Selenium Training in madipakkam
Selenium course in chennai | DevOps Training in velachery | DevOps Training in chennai | DevOps Training in anna nagar | DevOps Training in omr | DevOps Training in madipakkam | DevOps Training in vadapalani | DevOps Training in ashok nagar

surya said...


Awesome post with lots of data and I have bookmarked this page for my reference. Share more ideas frequently.
angular js training in chennai

angular training in chennai

angular js online training in chennai

angular js training in bangalore

angular js training in hyderabad

angular js training in coimbatore

angular js training

angular js online training

Jeffrey Pamthied said...

If you're searching for Mom Blog Names then
please apply here.

sathya said...

I must thank you for the efforts you have put in penning this site. I am hoping to check out the same high-grade content by you later on as well. Keep up the good work

selenium training in chennai

selenium training in chennai

selenium online training in chennai

selenium training in bangalore

selenium training in hyderabad

selenium training in coimbatore

selenium online training


dhinesh said...

Excellent Blog! I would Thanks for sharing this wonderful content.its very useful to us.I gained many unknown information, the way you have clearly explained is really fantastic.
keep posting such useful information.
Full Stack Training in Chennai | Certification | Online Training Course
Full Stack Training in Bangalore | Certification | Online Training Course
Full Stack Training in Hyderabad | Certification | Online Training Course
Full Stack Developer Training in Chennai | Mean Stack Developer Training in Chennai
Full Stack Training

Full Stack Online Training

IT Tutorials said...

Thanks for the article. Its very useful. Keep sharing.   AWS training in chennai  |     AWS online course   

lavanya said...

Nice and good article. It is very useful for me to learn and understand easily. Thanks for sharing your valuable information and time.
Java training in Chennai

Java Online training in Chennai

Java Course in Chennai

Best JAVA Training Institutes in Chennai

Java training in Bangalore

Java training in Hyderabad

Java Training in Coimbatore

Java Training

Java Online Training

.. said...

Dil Bechara Ringtone

Amit Karmakar said...

chemicloud Vs Siteground

Admin said...

Woow nice article about coding.Get Job update Govt Jobs

Jayalakshmi said...

Wow! Unbelievably accurate! Extremely well writtend blog. useful to learn. Great information you have shared.
java training in chennai

java training in tambaram

aws training in chennai

aws training in tambaram

python training in chennai

python training in tambaram

selenium training in chennai

selenium training in tambaram

praveen said...

Thanks for your post ,
its really valuable and informative one.

java training in chennai

java training in porur

aws training in chennai

aws training in porur

python training in chennai

python training in porur

selenium training in chennai

selenium training in porur

deiva said...

The Long path tool is the very best program for error, unlock solution.
Try it and solved your problem....
java training in chennai

java training in omr

aws training in chennai

aws training in omr

python training in chennai

python training in omr

selenium training in chennai

selenium training in omr



deiva said...

Impressive one. I will like to share a thing about this that my problem of copying and moving of ling path file solved by suing long path tool. I Suggest everyone to try this.
java training in chennai

java training in omr

aws training in chennai

aws training in omr

python training in chennai

python training in omr

selenium training in chennai

selenium training in omr



rocky said...

Thanks for sharing the required information with the clear update and required points. To appreciate this I like to share some useful information.
python training in chennai

python course in chennai

python online training in chennai

python training in bangalore

python training in hyderabad

python online training

python training

python flask training

python flask online training

python training in coimbatore


Devi said...

It's Really A Great Post. interesting and very useful links. Thanks for sharing. oracle training in chennai

shiny said...

This paragraph giving clear idea for a new viewers of blogging .thanks for this good work.
java training in chennai

java training in annanagar

aws training in chennai

aws training in annanagar

python training in chennai

python training in annanagar

selenium training in chennai

selenium training in annanaga


shiny said...

Well i like your high quality blog design plus your posting abilities .good job ,keep it up.
java training in chennai

java training in annanagar

aws training in chennai

aws training in annanagar

python training in chennai

python training in annanagar

selenium training in chennai

selenium training in annanaga



ramesh said...

Thanks for Sharing This Article.It is very so much valuable content."Nice blog I really appreciate your words,Nice post. It is really amazing and helpful.

Azure Training in Chennai

Azure Training in Bangalore

Azure Training in Hyderabad

Azure Training in Pune

Azure Training | microsoft azure certification | Azure Online Training Course

Azure Online Training


James Williams said...

Great post, i hope really enjoyed while reading your article, thanks for sharing the informative information.
Java Online Training
Java Online Training In Chennai
Java online Course in Chennai

lavanya said...

This is truly unique and excellent information. I sense you think a lot like me, or vice versa. Thank you for sharing this great article.I never comment on blogs but your article is so convincing that I never stop myself to say something about it. You’re doing a great job Man,Keep it up.Java training in Chennai

Java Online training in Chennai

Java Course in Chennai

Best JAVA Training Institutes in Chennai

Java training in Bangalore

Java training in Hyderabad

Java Training in Coimbatore

Java Training

Java Online Training

James Williams said...

great post, thanks for sharing such a great information.
Java Online Training
Java Online Training In Chennai
Java online Course in Chennai

Anonymous said...

Thank you..This is very helpful
Data science Training in bangalore
Aws Training In Bangalore
Hadoop Training In Bangalore
Devops Training In Bangalore
Iot Training in Bangalore

Sanaya said...

I appreciate your efforts because it conveys the message of what you are trying to say. It's a great skill to make even the person who doesn't know about the subject could able to understand the subject.

advanced java online training

Pankaj said...

Greate information. Google Opinion Rewards Mod Apk Unlimited Surveys apk Download

Pankaj said...

Thnx for information. Google Opinion Rewards Mod Apk

jeni said...

It was indeed very helpful and insightful while being straight forward and to the point. Keep sharing this kind of useful information.

data science training in chennai

data science training in velachery

android training in chennai

android training in velachery

devops training in chennai

devops training in velachery

artificial intelligence training in chennai

artificial intelligence training in velachery

Anonymous said...

thanks for sharing a great article with us.keep posting. River Group of Salon and spa, T.Nagar, provide a wide range of spa treatments, like body massage, scrub, wrap, and beauty parlor services. We ensure unique care and quality service.

massage in T.Nagar | body massage T.Nagar | massage spa in T.Nagar | body massage center in T.Nagar | massage centre in chennai | body massage in chennai | massage spa in chennai | body massage centre in chennai | full body massage in T.Nagar

surya said...

AngularJS is a structural framework for dynamic web apps. With AngularJS, designers can use HTML as the template language and it allows for the extension of HTML's syntax to convey the application's components effortlessly


angular js training in chennai

angular training in chennai

angular js online training in chennai

angular js training in bangalore

angular js training in hyderabad

angular js training in coimbatore

angular js training

angular js online training

Rashika said...

Well Said, you have furnished the right information that will be useful to anyone at all time. Thanks for sharing your Ideas.

Digital Marketing Training in Chennai

Digital Marketing Course in Chennai

SEO Training in Chennai

Digital Marketing Training in Bangalore

Digital Marketing Training in Hyderabad

Digital Marketing Training in Coimbatore

Digital Marketing Training

Digital Marketing Course

Digital Marketing Online Training


Prwatech said...

I am happy for sharing on this blog its awesome blog I really impressed. thanks for sharing. Great efforts.
Best Python Classes in Pune

Unknown said...

Data Science course in chennai
Excellent blog, good to see someone is posting quality information. Thanks for sharing this useful information. Keep up the good work.

devi said...

Excellent Blog! I would Thanks for sharing this wonderful content.its very useful to us.I gained many unknown information, the way you have clearly explained is really fantastic.keep posting such useful information.
Data Science Training In Chennai

Data Science Online Training In Chennai

Data Science Training In Bangalore

Data Science Training In Hyderabad

Data Science Training In Coimbatore

Data Science Training

Data Science Online Training

sanjay said...

great described.First Copy Watches For Men

Naresh I Technologies said...

Hi there, You’ve done a fantastic job. I’ll definitely digg it and personally recommend to my friends. if anyone wants to learn Trending software courses like Data Science, Programming languages, Cloud Topics Contact to NareshIT.
Data Science online training

SEOWORLD said...

Thanks for sharing this

trinityconcreteco.com

sathya said...

Nice post. Thanks for sharing! I want people to know just how good this information is in your
article. It’s interesting content and Great work. nice to read.
selenium training in chennai

selenium training in chennai

selenium online training in chennai

selenium training in bangalore

selenium training in hyderabad

selenium training in coimbatore

selenium online training

selenium training

Revathi said...

We help you to get best websites and good ranking in search engines, visit us...keep up!!

Android Training in Chennai

Android Online Training in Chennai

Android Training in Bangalore

Android Training in Hyderabad

Android Training in Coimbatore

Android Training

Android Online Training

anand said...

best information
Software Testing Training in Chennai | Certification | Online
Courses

Software Testing Training in Chennai

Software Testing Online Training in Chennai

Software Testing Courses in Chennai

Software Testing Training in Bangalore

Software Testing Training in Hyderabad

Software Testing Training in Coimbatore

Software Testing Training

Software Testing Online Training

Naresh I Technologies said...

Looks Great, A very Useful information Thank You..........


DevOps Online Training: https://nareshit.com/devops-online-training/

vivekvedha said...

It is really perfect blog thanks for sharing this great blog.
acte chennai

acte complaints

acte reviews

acte trainer complaints

acte trainer reviews

acte velachery reviews complaints

acte tambaram reviews complaints

acte anna nagar reviews complaints

acte porur reviews complaints

acte omr reviews complaints

Admin said...

Super Qwality Songs

The All Songs is very Hard So Qwality Very Good On This website

Download New 2020 Latest Song

Dj remix Song Qwality Songs

360kbps Songs Download

2020 Latest Song On This Website

2020 Latest Song

Kirti Chaturvedi said...

Thanks For sharing this article
Taxi App Development

Balram saw said...

wow nice article thanks
Biologysir
Meaninginhindi
Civilsir
word meaning

radhika said...

Thanks for your informative article, Your post helped me to understand the future and career prospects & Keep on updating your blog with such awesome article.



AWS Course in Chennai

AWS Course in Bangalore

AWS Course in Hyderabad

AWS Course in Coimbatore

AWS Course

AWS Certification Course

AWS Certification Training

AWS Online Training

AWS Training

prabhu said...

Thanks for this great blog. This is very clear cut explanation and easy to understand.
IELTS Coaching in chennai

German Classes in Chennai

GRE Coaching Classes in Chennai

TOEFL Coaching in Chennai

spoken english classes in chennai | Communication training

prabhu said...
This comment has been removed by the author.
vivekvedha said...

This looks absolutely perfect. All these tiny details are made with lot of background knowledge. I like it a lot.
acte reviews

acte velachery reviews

acte tambaram reviews

acte anna nagar reviews

acte porur reviews

acte omr reviews

acte chennai reviews

acte student reviews


Mohit roy said...

www.trickfi.com

groarz branding solutions said...

nice blog
solar rooftop in bangalore
solar ups in bangalore
solar street lights in bangalore
solar water heaters in bangalore
architectural pv solar in bangalore
solar water heater price in bangalore
best solar water heater in bangalore

Anonymous said...
This comment has been removed by the author.
Anonymous said...
This comment has been removed by the author.
Anonymous said...
This comment has been removed by the author.
Mickey. said...

Great Article!!!!Thank you for sharing Such a great post

https://devu.in/devops-certification-training-in-bangalore/

Best laptops Under 30000 said...

Best 2 3 4 burner gas stove in india

laptops under 30000 with i7 processor

10melhores said...

Click Hare
Click Hare
Click Hare
Click Hare
Click Hare

10melhores said...

I feel really happy to have seen your webpage. I am feeling grateful to read this. you gave nice information for us.please updating more stuff content...keep up!! please visit my site
10melhores
10melhores
10melhores
10melhores
10melhores

HindiProgrammer said...

such a nice blog

take a minute to join telegram groups links

data scientist said...

360DigiTMG offered the best data science courses in Bangalore assistance and offers blended data scientist training modalities. Learn the advanced data science course concepts and get your skills upgraded from the pioneers in Data Science. Learn fundamentals of data science, Machine Learning & AI.
best data science courses in bangalore | data science course in bangalore with placements

Unknown said...

Struggling to rank on Google? Local Doncaster+ Sheffield firm with no contracts, Businesses we will Launch your SEO campaign instantly. Get results within months & increase you organic rankings. Know more- SEO Agency

Vivek said...

Get free recharge

veer said...

https://www.evernote.com/shard/s741/sh/9443ff0f-0f58-4b19-9899-b49e853176d6/23a3df9476a9278a9c74d5927fe1b880

veer said...

7 Amazing Benefits of Guest Posting

Anonymous said...

excellent way of writing.
Python Interview Question And Answers
Web Api Interview Questions
OSPF Interview Questions And Answers

Unknown said...

Welcome to exceptionally natural products, dedicated to providing quality, low scent using quality essential oils. Facial Care, Soaps, Shampoos & amp; Conditioner and much more. Each product is formulated with the utmost care for sensitive skin and sensitives to airborne allergens and artificial fragrances. Get all the natural and hand made Skin Care Products here.

Anonymous said...
This comment has been removed by the author.
Anonymous said...
This comment has been removed by the author.
shiva said...

Excellent post gained so much of information, Keep posting like this. Cyber Security Training Course in Chennai | Certification | Cyber Security Online Training Course | Ethical Hacking Training Course in Chennai | Certification | Ethical Hacking Online Training Course |
CCNA Training Course in Chennai | Certification | CCNA Online Training Course | RPA Robotic Process Automation Training Course in Chennai | Certification | RPA Training Course Chennai | SEO Training in Chennai | Certification | SEO Online Training Course

Anonymous said...

Thank you.. This is very helpful
Data science Training in bangalore | Data science Live Online Training
Aws Training In Bangalore | Aws Live Online Training
Hadoop Training In Bangalore | Hadoop Live Online Training
Devops Training In Bangalore | Devops Live Online Training
IOT Training in Bangalore | IOT Live Online Training

vivekvedha said...

Good informative post with explanation. Really I found some information .
acte reviews

acte velachery reviews

acte tambaram reviews

acte anna nagar reviews

acte porur reviews

acte omr reviews

acte chennai reviews

acte student reviews

Novaedu said...

Very useful information
study abroad consultants

Aditi Gupta said...

This is a great inspiring article.I am pretty much pleased with your good work.You put really very helpful information.

Golden Triangle Tour 5 Days

moumita said...

Thanks for provide great informatics and looking beautiful blog, really nice required information. Thanks for sharing us.

Free DoFollow Blog Commenting Sites

Anonymous said...
This comment has been removed by the author.
IoT said...

Attend IoT Classroom Training in Bangalore with 100 % Placement Support. Design and implement IoT devices and software with the aid of our three-day Certificate Course in IoT Training in Bangalore.
iot training bangalore | iot courses in bangalore

BHUPESH RATHORE said...

Cnet
etst
fb
flicks
livejournal
pin
pin
tumblr
twitter
yt

Anonymous said...
This comment has been removed by the author.
Anonymous said...

inewkhushi


need for speed no limit mod games

AWS Training In Velachery said...

Great blog with good informative content, Keep doing the great work.

Follow the below link for the best training in Velachery.
Training in velachery is one of the best training institute in Chennai which provides various modes of trainings like classroom training, online training and live training in velachery, Chennai. We provide both weekdays training and Weekend training in velachery, Chennai with flexible timing.

Android training in Velachery
Java training in Velachery
C C++ training in Velachery
Python training in Velachery
Dotnet training in Velachery
iOS training in Velachery
IoT training in Velachery
full stack Developer training in Velachery
Devops training in Velachery

Anonymous said...
This comment has been removed by the author.
svrtechnologies said...

Woah this blog is wonderful i like studying your posts. Keep up the great work! You understand, lots of persons are hunting around for this info, you could help them greatly.I want to share some information regarding angular js training

Mohd Sharique said...

Very interesting to read this article.I would like to thank you for the efforts you had made for writing this awesome article. This article inspired me to read more. keep it up.

python online course certification

sindhuja cynixit said...


Thank you for sharing the valuable information.
ui path online training
rpa uipath training in hyderabad
uipath certification course
best uipath training in hyderabad

shiva said...

It is really very helpful for us and I have gathered some important information from this blog.
| Certification | Cyber Security Online Training Course | Ethical Hacking Training Course in Chennai | Certification | Ethical Hacking Online Training Course | CCNA Training Course in Chennai | Certification | CCNA Online Training Course | RPA Robotic Process Automation Training Course in Chennai | Certification | RPA Training Course Chennai | SEO Training in Chennai | Certification | SEO Online Training Course

Lottery Winning Tips said...

Thanks for sharing valuable information.It will help everyone.keep Post.
Shilong Teer Target

kevin32 said...

To correct the QuickBooks Error 15243 issue, you ought to get the application back in the previous state and resolve the FCS problem fastly that you can.

Quickbooks Phone Number said...

Nice Blog!
Facing error while using QuickBooks get instant solution with our QuickBooks experts.Dial +1-(855)533-6333 QuickBooks Support Phone Number

kevin2 said...

Apart from that you may also try on the QuickBooks Error 83 customer care number which can be toll free and globally available for all the users around the globe.

juli said...

wow! awesome post. drone x pro

svrtechnologies said...

very nice post... thanks for sharing such a nice post . We are one of the best online learning portal in the world. Experienced Faculty,Free Life time video access and many more facilities available on online training courses.
Angular js video Tutorials

Chams Clearance London said...

It's really a nice and useful piece of information. I am satisfied that you shared this helpful info with us. Please stay us up to date like this. Thanks for sharing.

Chums Clearance is a professional rubbish clearance company undertaking garden clearance, house clearance, minor demolition jobs, tree surgery, and general rubbish clearance in Kingston and surrounding areas.Visit our site for House Clearance Service in Kingston.We can help.

Data science said...

I am really happy to say it’s an interesting post to read . I learn new information from your article , you are doing a great job . Keep it up

Devops Training in USA

Hadoop Training in Hyderabad

Python Training in Hyderabad

Anurag Mohapatra said...

Nice tutorial. Thanks for sharing the valuable information. it’s really helpful. Who want to learn this blog most helpful. Keep sharing on updated tutorials…
<a href="https://upskilliq.in/devops.html'>DevOps training in Bangalore BTM</a>

Anurag Mohapatra said...

Nice tutorial. Thanks for sharing the valuable information. it’s really helpful. Who want to learn this blog most helpful. Keep sharing on updated tutorials…
DevOps training in Bangalore BTM

Harshit Prajapati said...

Best gadgets review
Bestbicycles to buy online

Mr White said...
This comment has been removed by the author.
SRC said...

Great Information
Traveling in Bangladesh

Amit said...

Stones InternationalReal Estate offers real estate services in Dubai. It deals with residentialproperties in Dubai, commercial properties in Dubai, bulk purchases in Dubai,investment advisory for Dubai real estate, etc. If you want to buy property inDubai, or rent property in Dubai, it will provide you all the necessaryassistance. With Stones International, you can start your search for apartmentsfor sale in Dubai, apartments for rent in Dubai, villa for sale in Dubai, villafor rent in Dubai, and many other services related to real estate in Dubai. Itis among the Rent an apartment in Dubai. If end-users are looking to buy property in Dubai or investors want toinvest in Dubai real estate, Stones International aims to provide the bestservices. Its other services include property management in Dubai, investmentportfolio management, interior designing and holiday homes in Dubai.    

Ajithkumar said...

Excellent Blog. Thank you so much for sharing.
DevOps training in chennai
DevOps Course in chennai
Best DevOps training in chennai

Technogeekscs said...

This is most informative and also this post most user friendly and super navigation to all posts.
Online Data Science Training

Vijayakash said...

This Information Very Helpful to everyone
devops interview questions and answers
devops interview questions and answers for experienced
java interview questions for freshers
selenium interview questions and answers pdf download
digital marketing interview questions and answers for freshers
hadoop interview questions and answers pdf
oracle pl sql interview questions

Technology Blog said...

Thanks for Sharing Great article.

Here are some Best Internet Service Providers.

Best internet Service Providers

Technology Blog said...

Very Informative Article.

Do You Want to Change your Facebook page name?. I am explaining it here in a simple way so you can easily understand. Now a days it is really easy.

Change your Facebook Page Name

Michaelsimo said...

Thanks for sharing valuable information. I need detailed information regarding Clinical Research Nurse and how it is more beneficial than normal. If someone has detailed information then please guide me...
https://ccrps.org/

Technology Blog said...

Very Nice and Helpful article. Keep sharing. Do You Want to Change your Facebook page name?. I am explaining it here in a simple way so you can easily understand. Now a days it is really easy.

Change your Facebook Page Name

Asim said...

Hello very
(Best Short video editor
).

Anonymous said...

Thanks
https://social.msdn.microsoft.com/Profile/jackd015
https://answers.microsoft.com/en-us/profile/f246d888-7182-49c7-970d-d5cecc863312?sort=LastReplyDate&dir=Desc&tab=Threads&forum=allcategories&meta=&status=&mod=&advFil=&postedAfter=undefined&postedBefore=undefined&threadType=All&page=1
https://forums.iis.net/members/jackd015.aspx


http://knsz.prz.edu.pl/forum/member.php?action=profile&uid=621992
https://konshadows.guildwork.com/forum/threads/580225a1002aa86b5cb148be-partition-coefficients-and-their-uses-pdf-free?page=2&_=3aa6#5f774f24ec0d542b2f1d147c
https://scout.wisc.edu/Weblog/20110601?page=8#comment-64664
http://blogs.harvard.edu/vrm/about/comment-page-13/#comment-38890
https://lwccareers.lindsey.edu/employers/808b99e4-3740-4c2f-8d6c-9e105d756f07/dashboard
https://onlybiography.com/yami-gautam-biography-age-height-family-boyfriend-photos/
https://forums.tomshardware.com/threads/suggest-any-good-laptop-under-80k.3650943/

Unknown said...

https://zulqarnainbharwana.com/the-new-york-times/

ravisynit said...

great java tips At SynergisticIT we offer the best best java training in california

Sanjit Modak said...

Free Recharge Trick 100%Free https://www.rechargetrick.online

Venkatesh CS said...
This comment has been removed by the author.
Anonymous said...

I read your blog, Thanks for sharing this informative blog.

https://www.sevenmentor.com/best-python-classes-in-pune.php

My Safari Dubai said...

Leave the city behind & drive with us for a Thrilling drive over the Desert Dunes & Experience a lavish dinner with amazing shows in our Desert Camp. desert safari dubai deals

BtreeSystem Training said...

btreesystems
aws training in chennai
Python training in Chennai
data science training in chennai

عرب للمعلوميات said...

https://islamical.blogspot.com/2020/08/internet-speed.html
https://islamical.blogspot.com/2020/03/biss-hd.html
https://islamical.blogspot.com/2020/01/best-android-apps.html
https://islamical.blogspot.com/2020/02/filelinked-firestick.html
https://islamical.blogspot.com/2020/03/stalker-player-for-android.html
https://islamical.blogspot.com/2020/02/atlas-iptv.html
https://islamical.blogspot.com/2019/10/maps-me-pro.html
https://islamical.blogspot.com/2019/10/Best-android-apps.html
https://islamical.blogspot.com/2019/10/f-droid.html

«Oldest ‹Older   1401 – 1600 of 2346   Newer› Newest»